JTable (Itens Avançados com JComboBox ou JList - AutoComplete) [RESOLVIDO]

Boa Tarde companheiros …

Estou querendo colocar uns itens mais avançados na minha JTable. Minha primeira idéia foi inserir uma linha e setar aos campos de uma específica coluna um objeto
JComboBox com Item carregados por uma Consulta sql. A idéia funcionou mais não ficou viável.

Eu preciso de uma idéia para mudar esse lógica para o seguinte:
Em vez de aparecer um Combo, quero que ao digitar o item apareca os itens que iniciarem com as letras digitadas no campo, funcionaria como um sql utilizando o like % e assim
mostrasse todos os itens encontrados com aquelas iniciais. Um fato importante é além da opção de digitar mostre visível o combo ou lista com os elementos encontrados, podendo setar a quantidade de itens para visualização

Poderia facilitar isso se no campo invocasse um Jframe com um campo de Busca + uma Tabela de Itens selecionados pelo evento de tecla (sql + like %), porém estou fugindo dessa idéia …

Segue código da Primeira Idéia sem utilizar sql

//O usuário pode Alterar a Posição das Colunas TableColumn descricaoColumn = jTModular.getColumnModel().getColumn(jTModular.getColumnModel().getColumnIndex("Descricao")); //Cria modelo default da Tabela DefaultTableModel modelo = (DefaultTableModel) jTModular.getModel(); //Adiciona Linha a Tabela modelo.addRow(new Object[]{}); //Cria Objeto da Classe JComboBox JComboBox comboBoxDescricao = new JComboBox(); //Define a Qtde de Itens visíveis no Combo comboBoxCodigo.setMaximumRowCount(10); //Adiciona Itens ao Combo comboBoxDescricao .addItem("Parafuso 10/150"); comboBoxDescricao .addItem("Parafuzeta 10/300"); comboBoxDescricao .addItem("Martelo"); comboBoxDescricao .addItem("Parafuso 10/300"); //Seta o Combo a Coluna descricaoColumn .setCellEditor(new DefaultCellEditor(comboBoxCodigo));

Pra que fazer simples se eu posso complicar …kkk

Desde já agradeço pra quem pelo menos ler essa loucura ou mágica …

Atenciosamente
Cleyson Cloves do Carmo
Estudante de Sistema de Informação

Bom Dia Companheiros …

Deixa eu melhorar e resumir minha pergunta … :smiley:

Tem como eu inserir um objeto JList num campo de uma JTable? (JComboBox eu sei que tem)

Se tiver, eu quero que ao clicar no campo abra a JList com ex: 10 elementos visiveis, quando vou digitando vai direcionando para o item da lista com tais informações…

Descompliquei a pergunta …

Atenciosamente
Cleyson Cloves do Carmo

Bom Dia Companheiros …

Ralei mas consegui …

Segue Fonte de Informações :
http://markmail.org/message/za5zmidadpr3g5ke
http://forums.netbeans.org/topic8799.html&highlight=
http://www.java2s.com/Open-Source/Java-Document/Swing-Library/swingx/org.jdesktop.swingx.autocomplete.htm

//Cria modelo default da Tabela DefaultTableModel modelo = (DefaultTableModel) jTBMaterialServico.getModel(); //Adiciona Linha a Tabela modelo.addRow(new Object[]{}); //Array com Dados String dados[] = { "Parafuso 10/150", "Parafuso 10/300", "Parafuseta" , "Acentuação", "Acento"}; jTBMaterialServico.getColumnModel().getColumn(1).setCellEditor(createEditor(dados)); jTBMaterialServico.setSurrendersFocusOnKeystroke(true);

[code]private TableCellEditor createEditor(String dados[]) {
JComboBox combo = new JComboBox(dados) {
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e,
int condition, boolean pressed) {
boolean retValue = super.processKeyBinding(ks, e, condition,pressed);

            if (!retValue && isStartingCellEdit() && editor != null) {
                // this is where the magic happens
                // not quite right; sets the value, but doesn't advance the
                // cursor position for AC
                editor.setItem(String.valueOf(ks.getKeyChar()));
            }

            return retValue;
        }

        private boolean isStartingCellEdit() {
            JTable table = (JTable) SwingUtilities.getAncestorOfClass(
                    JTable.class, this);

            return table != null
                    && table.isFocusOwner()
                    && !Boolean.FALSE.equals((Boolean) table
                            .getClientProperty("JTable.autoStartsEdit"));
        }
    };
    AutoCompleteDecorator.decorate(combo);

    return new ComboBoxCellEditor(combo);
}[/code]

Espero que ajude alguém …

Atencisoamente,
Cleyson Cloves do Carmo
Estudante de Sistema de Informação