使用jTables中的TableCellEditor进行输入验证

时间:2011-12-06 19:54:10

标签: java swing desktop-application validation

我有一个有3列的JTable。列上的一个必须有一个整数值,我必须在单元失去焦点之前验证输入。

我使用了单元格编辑器并覆盖了stopCellEditing()函数。我已经在stopCellEditing中编写了验证,它确实将重点放在了单元格上,但我的问题是:

  • 该列不能接受多个值(如果我移动到编辑另一个单元格,内容会消失!!)
  • 如果我正在编辑此列中的一个单元格,我无法按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());

Plz帮助我:)

1 个答案:

答案 0 :(得分:2)

  

列上的一个必须具有整数值

无需为此编写自定义编辑器。

您需要做的就是覆盖JTable的getColumnClass()方法或TableModel,表格将使用提供的Integer编辑器。

关于您发布的代码:

  1. 由于您的if条件无效,因此无法编译。我们需要真正的代码,以便我们发现可能的逻辑错误。代码也应以SSCCE

  2. 的形式发布
  3. 无需引用委托变量。只需直接调用getCellEditor()方法。

  4. 当我覆盖stopCellEditing()时,不知道它是否有所不同,而不是返回true我使用:

    return super.stopCellEditing();