首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableCellEditor在jTables中的输入验证

TableCellEditor在jTables中的输入验证
EN

Stack Overflow用户
提问于 2011-12-06 19:54:09
回答 1查看 2.1K关注 0票数 1

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

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

  • 该列不能接受多个值(如果我移动到编辑另一个单元格,内容就会消失!)
  • 如果我正在编辑本专栏中的一个单元格,则无法单击enter!

这是我的编辑课:

代码语言:javascript
复制
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(new MyEditor();

请帮助我:)

EN

回答 1

Stack Overflow用户

发布于 2011-12-06 20:25:32

列中的一个必须有一个整数值。

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

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

关于您发布的代码:

  1. 它不会编译,因为您的if条件无效。我们需要真正的代码,这样我们就可以发现可能的逻辑错误。代码还应该以SSCCE的形式发布。
  2. 不需要引用委托变量。只需直接调用getCellEditor()方法即可。
  3. 当我重写stopCellEditing()而不是返回true时,我不知道它是否有区别,我使用: return super.stopCellEditing();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8405934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档