JCombobox numa JTable só aparece ao clicar

3 respostas
E

Pessoal

O seguinte código é executado, porém só aparece o jcombobox se eu clicar no espaço onde está a célula com esse meu combo na tabela. Ao abrir a tela não aparece.

O que posso fazer para solucionar?

Obrigado

col = jTable1.getColumnModel().getColumn(0);

        values = new String[listProd.size()];

        for(int prods = 0; prods < listProd.size(); prods++){
            values[prods] = (listProd.get(prods)).getNome();
        }

        JComboBox jcbOpcoesComponentes = new JComboBox(values);

        jcbOpcoesComponentes.addItemListener(new ItemListener(){
             public void itemStateChanged(ItemEvent evt){
                    if(evt.getStateChange() == 1){
                        System.out.println("teste");
                    }
             }
         });
         
        col.setCellEditor(new DefaultCellEditor(jcbOpcoesComponentes));

3 Respostas

ViniGodoy

Além do CellEditor, você deve alterar também o CellRenderer.

E

Ok. Corrigido.

Agora um detalhe referente a esse jcombo. Ao alterar ele, o combocor recebe o valor correto, porém o comboatual também está recebendo o valor Teste. E deveria ser somente o combocor. O que estou fazendo errado ?

Obrigado

jcbProdutos.addItemListener(new ItemListener(){
             public void itemStateChanged(ItemEvent evt){
                 //System.out.println(evt.getItem() + " " + evt.getStateChange() );

                    if(evt.getStateChange() == 1){
                        //String produto = jTable1.getValueAt( jTable1.getSelectedRow(), 0 ).toString();
                        //System.out.println(produto);
                        TableColumn colunaCor = jTable1.getColumnModel().getColumn( 3 );
                        Component comboCidade = jTable1.getCellEditor().getTableCellEditorComponent(jTable1, "", true, jTable1.getSelectedRow(), 3 );
                        ( ( JComboBox ) comboCidade ).setModel(new DefaultComboBoxModel( new String[]{"Teste"}) );
                        colunaCor.setCellEditor( new DefaultCellEditor( ( ( JComboBox ) comboCidade ) ) );
                    }
             }
         });
E

Voltando ao problema agora é o seguinte:

Usando:

JComboBox myJComboBox = new JComboBox();
                        myJComboBox.setModel(new DefaultComboBoxModel( new String[]{"Teste"}) );
Se eu setar com a linha:
jTable1.setValueAt(myJComboBox, jTable1.getSelectedRow(), 3) ;

Em vez de itens no combo aparece o texto: javax.swing.JComboBox[,0,0,0x0,invalid,layout=javax.swing.plaf.metal.MetalComboBoxUI$MetalComboBoxLayoutManager,alignmentX=0.0,alignmentY=0.0,border=,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=Teste]

Se eu usar

col = jTable1.getColumnModel().getColumn(3);
                        col.setCellEditor(new DefaultCellEditor(myJComboBox));
                        col.setCellRenderer(new CustomTableCellRenderer());

Funciona porém altera todos combos da coluna e não só o da linha atual, que é o que pretendo.

Como posso corrigir isso ?

Obrigado

Criado 27 de setembro de 2010
Ultima resposta 1 de out. de 2010
Respostas 3
Participantes 2