我的问题是,当我将Cell放入单元格中并将CellEditor设置为JComboBox时,它很好,但是当单击单元格时我得到了包含对象的列表,但是选中的一个不是之前在单元格中的那个,但只是列表中的第一个。有没有简单的方法来解决它?
public void setValueAt(Object value, int row, int col) {
data.get(row).values.set(col, (Device) value);
fireTableCellUpdated(row, col);
}
和
for(int i = 0; i < deviceTable.getModel().getColumnCount(); i++){
ExtendedAbstractTableModel model = (ExtendedAbstractTableModel) deviceTable.getModel();
JComboBox<Device> combo = new JComboBox<Device>();
for(Device value : model.columnsCombo.get(i)){
combo.addItem(value);
}
TableColumn columnModel = deviceTable.getColumnModel().getColumn(i);
columnModel.setCellEditor(new DefaultCellEditor(combo));
}
答案 0 :(得分:1)
如此example所示,DefaultCellEditor
会为您处理此问题。您正在循环中添加多个实例;单个实例可以处理整个列。 DefaultCellEditor
通过覆盖嵌套EditorDelegate
中的setValue()
来工作。目前尚不清楚您是如何击败此功能的,但了解默认设置可能会引导您的搜索。
public void setValue(Object value) {
comboBox.setSelectedItem(value);
}
答案 1 :(得分:0)
最后我发现了什么问题。我没有在我的班级中覆盖相同的方法,这就是为什么这些组件无法识别相同的项目。无论如何,谢谢大家。