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));
}
}