Java 在jTables中使用TableCellEditor进行输入验证
我有一个3列的JTable。列上的一个必须有一个整数值,我必须在单元格失去焦点之前验证输入 我使用了cell editor并重写了stopCellEditing()函数。我已经在stopCellEditing中编写了验证,它确实保持了对单元格的关注,但我的问题是:Java 在jTables中使用TableCellEditor进行输入验证,java,swing,desktop-application,validation,Java,Swing,Desktop Application,Validation,我有一个3列的JTable。列上的一个必须有一个整数值,我必须在单元格失去焦点之前验证输入 我使用了cell editor并重写了stopCellEditing()函数。我已经在stopCellEditing中编写了验证,它确实保持了对单元格的关注,但我的问题是: 该列不能接受多个值(如果我移动到编辑另一个单元格,内容将消失!!) 如果我正在编辑此列中的一个单元格,则无法按enter键 这是我的编辑课: public class MyEditor extends DefaultCellEdi
- 该列不能接受多个值(如果我移动到编辑另一个单元格,内容将消失!!)
- 如果我正在编辑此列中的一个单元格,则无法按enter键李>
public class MyEditor extends DefaultCellEditor implements TableCellEditor {
public MyEditor() {
super(new JTextField());
}
@Override
public boolean stopCellEditing() {
Object obj = delegate.getCellEditorValue();
if (obj is not an integer) {
return false;
}
return true;
}
这就是我在我的框架中使用的方式:
studentsTable.getColumnModel().getColumn(2).setCellEditor(新
MyEditor())
请帮帮我:)
列上的一个必须具有整数值
无需为此编写自定义编辑器
您所需要做的就是重写JTable或TableModel的getColumnClass()
方法,该表将使用提供的整数编辑器
关于您发布的代码:
返回super.stopCellEditing()代码>
当输入无效输入并且用户更改焦点时,期望的行为是什么?还原为旧值,使用默认值,…该条件永远不会为真-从textField返回的值始终只是一个字符串,因此您取消了默认处理的方向,正如@camickr已经指出的那样。他在其他项目中也很在行——如果编辑有效,不调用super显然是错误的,这是听众收到通知的地方——因此显示sscce以寻求帮助:-)。stopCellEditing()中的内容无关紧要,cz即使我删除了刚刚返回true的代码,我也会得到相同的结果。只有当我删除该函数时,一切才恢复正常,当然没有验证@camickr