Usando JComboBox em uma célula de um JTable

Veja nesta dica como inserir um ComboBox em uma célula do JTable.

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));
}
}
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados