java JTable编辑器保留旧值
好的,我注意到我的编辑器在^{
- 我编辑一个单元格并输入一个有效值,比如说输入42
- 我双击另一个单元格(可以是空的,也可以不是空的)
- 单元格现在包含42,我可以编辑这个值,但当我双击单元格42时,它就在单元格中李>
我怀疑我的编辑,因为当我使用DefaultCellEditor
时没有问题。声明如下:
public class GlobalEditor extends DefaultCellEditor {
public GlobalEditor(JTable table, JTextField jtf) {
super(jtf);
/*
* Setting font, background/foreground color, center alignement
*/
}
public boolean stopCellEditing() {
String value = ((JTextField) getComponent()).getText();
if (!value.equals("")) {
if (value.length() > 10) {
((JComponent) getComponent()).setBorder(new LineBorder(Color.red));
return false;
}
}
return super.stopCellEditing();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
JTextField ec = (JTextField) editorComponent;
if(value != null && value+"" != "---")
ec.setText(""+value);
if (isSelected) {
ec.selectAll();
}
return editorComponent;
}
}
这一行this.setDefaultEditor(Object.class, new GlobalEditor(this, new JTextField()));
在我的JTable
构造函数中设置我的编辑器
我错过了什么
# 1 楼答案
您应该重写getCellEditorValue方法
也不需要用JTable初始化GlobalEditor
# 2 楼答案
好吧,这起作用了:
而不是(也返回
ec
而不是editorComponent
):在
getTableCellEditorComponent
方法中欢迎任何解释