我想将各个JComboBox放入JTable的每个单元格中.即.每个单元格的JComboBox内容并不相同.
我基本上希望能够只调用以下代码将一行JComboBox添加到JTable中.任何人有任何想法?谢谢
JComboBox cb1 = new JComboBox(...); JComboBox cb2 = new JComboBox(...); model.addRow(new Object[] {"Row name", cb1, cb2} ); JComboBox cb3 = new JComboBox(...); JComboBox cb4 = new JComboBox(...); model.addRow(new Object[] {"Row name 2", cb3, cb4} );
我能找到的最接近的示例代码如下.但是对于单个列的JComboBox内容是相同的.不是我需要的解决方案.
TableColumn col = table.getColumnModel().getColumn(vColIndex); col.setCellEditor(new MyComboBoxEditor(values));
哪里
public class MyComboBoxEditor extends DefaultCellEditor { public MyComboBoxEditor(String[] items) { super(new JComboBox(items)); } }
小智.. 9
使用以下代码扩展JTable:
@Override public TableCellEditor getCellEditor(int row, int column) { Object value = super.getValueAt(row, column); if(value != null) { if(value instanceof JComboBox) { return new DefaultCellEditor((JComboBox)value); } return getDefaultEditor(value.getClass()); } return super.getCellEditor(row, column); }
这将为您获得值的每个组合框创建一个唯一的JComboBox单元格编辑器.
使用以下代码扩展JTable:
@Override public TableCellEditor getCellEditor(int row, int column) { Object value = super.getValueAt(row, column); if(value != null) { if(value instanceof JComboBox) { return new DefaultCellEditor((JComboBox)value); } return getDefaultEditor(value.getClass()); } return super.getCellEditor(row, column); }
这将为您获得值的每个组合框创建一个唯一的JComboBox单元格编辑器.