JTable com ComboBox

Pessoal,

Alguém teria um exemplo de como colocar um JComboBox em uma linha da JTable?
Com isso o usuário poderia selecionar o registro na própria table sem ter que chamar outra tela para tal.

[]'s

Vé se isso resolve teu problema.

    JTable table = new JTable();
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    
    // Add some columns
    model.addColumn("A", new Object[]{"item1"});
    model.addColumn("B", new Object[]{"item2"});
    
    // These are the combobox values
    String[] values = new String[]{"item1", "item2", "item3"};
    
    // Set the combobox editor on the 1st visible column
    int vColIndex = 0;
    TableColumn col = table.getColumnModel().getColumn(vColIndex);
    col.setCellEditor(new MyComboBoxEditor(values));
    
    // If the cell should appear like a combobox in its
    // non-editing state, also set the combobox renderer
    col.setCellRenderer(new MyComboBoxRenderer(values));
    
    public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
        public MyComboBoxRenderer(String[] items) {
            super(items);
        }
    
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {
            if (isSelected) {
                setForeground(table.getSelectionForeground());
                super.setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            }
    
            // Select the current value
            setSelectedItem(value);
            return this;
        }
    }
    
    public class MyComboBoxEditor extends DefaultCellEditor {
        public MyComboBoxEditor(String[] items) {
            super(new JComboBox(items));
        }
    }

URL:

http://exampledepot.com/egs/javax.swing.table/ComboBox.html

Bom exemplo, mas gostaria de saber como fazer para popular o objeto String[] com dados do banco!!!

ResultSet rs = st.executeQuery("select item ..."); rs.last(); String[] values = new String[rs.getRow()]; rs.first(); while (rs.next()) { values[rs.getRow()-1] = rs.getString("item"); }

Muito bom! Obrigado helviojunior!
Funcionou direitinho aqui pra mim. Mas agora tem outra:

-Como vou fazer para usar um setselecteditem diferente para cada linha da tabela?

Porque se eu usar na MyComboBoxRenderer vai ficar selecionado o MESMO item no combo para todos os registros da tabela e no meu caso eles terão de ser diferentes.

Neste exemplo como faço para disparar um ação dado um valor selecionado no combobox ?

Consegui adcionar o evento assim:

            MyComboBoxRenderer cb= new MyComboBoxRenderer(values);
            
            int vColIndex = 0;  
            TableColumn col = table.getColumnModel().getColumn(vColIndex);  

            col.setCellRenderer(cb);         
            col.setCellEditor(new MyComboBoxEditor(dataColumn));
                      
            ItemListener itemListenerComboBox = new ItemListener()
            {
                public void itemStateChanged(ItemEvent evt)
                {
                    if (evt.getStateChange() == ItemEvent.SELECTED)
                    {
                        String item = evt.getItem().toString();

                        //faz alguma coisa                                                 
                    }
                }
            };
            
            cb.addItemListener(itemListenerComboBox);

No exemplo dado, o combobox é adiconado a todas as colunas da coluna zero…

Como seria para adcionar apenas a uma linha especificada ? por exemplo apenas a ultima linha…

Alguem pode ajudar ?

Viny ?

Como faço para retirar o combobox da linha da tabela, após o evento de seleção do combobox ?

Helpe-me …
Pleassseeeee…