Usando JComboBox em uma célula de um JTable

Se os valores possíveis permitidos em uma coluna devessem ser um conjunto fixo de valores, um combobox pode ser a escolha apropriado como o editor da célula para essa coluna. Usando um combobox, é impossível para o usuário entrar com um valor inválido.

    JTable table = new JTable();
    DefaultTableModel model = (DefaultTableModel)table.getModel();        // Adiciona algumas colunas
    model.addColumn("A", new Object[]{"item1"});
    model.addColumn("B", new Object[]{"item2"});       // Este são os valores do combobox
    String[] values = new String[]{"item1", "item2", "item3"};        // Configura o combobox na primeira coluna visível
    int vColIndex = 0;
    TableColumn col = table.getColumnModel().getColumn(vColIndex);
    col.setCellEditor(new MyComboBoxEditor(values));        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());
            }                setSelectedItem(value);
            return this;
        }
    }        public class MyComboBoxEditor extends DefaultCellEditor {
        public MyComboBoxEditor(String[] items) {
            super(new JComboBox(items));
        }
    }