public class ComboCellRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
combo.setSelectedItem(value);
return combo;
}
private JComboBox combo = new JComboBox(new String[] {"a", "b", "c"});
}
public class ComboCellEditor extends AbstractCellEditor implements TableCellEditor {
public Object getCellEditorValue () {
return combo.getSelectedItem();
}
public Component getTableCellEditorComponent (JTable table, Object value, boolean isSelected, int row, int column) {
combo.setSelectedItem(value);
return combo;
}
private JComboBox combo = new JComboBox(new String[] {"a", "b", "c"});
}
public static void main (String[] args) {
DefaultTableModel model = new DefaultTableModel(0, 2);
Vector v = new Vector();
v.add("a");
v.add("b");
model.addRow(v);
JTable table = new JTable(model);
table.setDefaultRenderer(Object.class, new ComboCellRenderer());
table.setDefaultEditor(Object.class, new ComboCellEditor());
JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(table));
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.pack();
frame.setVisible( true );
}