我是一名软件开发人员学徒,必须为我的公司编写一个特定于图形项目的配置编辑器。我使用Apache从项目的配置excel文件中加载数据,并将数据包装到ConfigValue对象中。对于不同的ConfigValue对象,必须有不同的单元格编辑器和渲染器。
我的程序的图形用户界面使用自定义的JTable和DefaultTableModel。表/模型中的每个值都是一个ConfigValue,对于定义的不同的ConfigTypes,应该以不同的方式呈现。(据我所知,所有工作-导入、包装、加载到表中)
但是,我对其中一个自定义类型的TableCellRenderer或TableCellEditor有一些问题,应该将其呈现为包含所有可能的后端实体值的ComboBox。呈现ComboBox并显示正确的初始值.但当我把一个细胞换成另一个ConfigValue.渲染器不显示此值..。(它总是更改为单元格的相同值(编辑器值的第一个值))
有人能帮我解决我的编辑器/渲染者做错了什么吗?
public class ConfComboBoxCellEditor extends DefaultCellEditor {
public ConfComboBoxCellEditor(List<ConfigValue> possibleValues) {
super(new JComboBox(possibleValues.toArray()));
}
@Override
public Object getCellEditorValue() {
Object cellEditorValue = super.getCellEditorValue();
System.out.println("DEBUG - CELL EDITOR - get editor value --> " + ((ConfigValue) cellEditorValue).toString());
return cellEditorValue;
}
}
public class ConfComboBoxCellRenderer extends JComboBox<ConfigValue> implements TableCellRenderer {
public ConfComboBoxCellRenderer() {
System.out.println("NEW CELL RENDERER");
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
ConfComboBoxCellRenderer renderer = (ConfComboBoxCellRenderer) table.getCellRenderer(row, column);
renderer.removeAllItems();
renderer.addItem((ConfigValue) value);
renderer.setSelectedItem(value);
System.out.println("DEBUG - CELL RENDERER " + row + ", " + column + " - get cell render comp --> " + ((ConfigValue) value));
return this;
}
}发布于 2014-07-09 13:40:01
有人能帮我解决我的编辑器/渲染者做错了什么吗?
https://stackoverflow.com/questions/24654701
复制相似问题