当前位置: 首页 > 面试题库 >

使用编辑器验证表的单元格

郭俊拔
2023-03-14
问题内容

我的JTable有一个密码字段编辑器。如果用户单击以编辑另一个字段时文本长度小于8位,我想显示一条错误消息。我已经尝试过焦点监听器。但是它不起作用。请帮助我,因为我刚刚开始使用Java
swing

class PasswordEditor extends DefaultCellEditor 
{

    TextBox m_passWord = new TextBox(); 
    public PasswordEditor() {
        super(new TextBox());
    }

    @Override
    public Object getCellEditorValue() {

        return this.m_passWord.getText();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {

        Object fieldValue = value;
        if(null == fieldValue)
            fieldValue = Constants.EMPTY_STRING;

        this.m_passWord.addInputMethodListener(new InputMethodListener() {

            @Override
            public void inputMethodTextChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }

            @Override
            public void caretPositionChanged(InputMethodEvent event)
            {
                // TODO Auto-generated method stub

            }
        })
        this.m_passWord.addFocusListener(new FocusListener() {

            @Override
            public void focusLost(FocusEvent e)
            {
                if (!e.isTemporary()) {
                      String content = PasswordEditor.this.m_passWord.getText();
                      System.out.println((content));
                }

            }

            @Override
            public void focusGained(FocusEvent e)
            {
                //TODO init
            }
        });

        this.m_passWord.setEditable(true);
        this.m_passWord.setText(fieldValue.toString());
        return this.m_passWord;
    }


}

问题答案:

覆盖stopCellEditing()并在其中实现条件。

 class PasswordEditor extends DefaultCellEditor 
{

    TextBox m_passWord = new TextBox(); 
    public PasswordEditor() {
        super(new TextBox());
    }

            @Override
    public boolean stopCellEditing()
    {
        if(getCellEditorValue().toString().length() < 8)
        {
            JOptionPane.showMessageDialog(UsmUserView.this.m_Parent, "Password Must Be 8 Bytes Long !! Please Check");
            return false;
        }
        fireEditingStopped();
        return true;
    }

    @Override
    public Object getCellEditorValue() {

        return this.m_passWord.getText();
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
            Object value, boolean isSelected, int row, int column) {

        Object fieldValue = value;
        if(null == fieldValue)
            fieldValue = Constants.EMPTY_STRING;

        this.m_passWord.setEditable(true);
        this.m_passWord.setText(fieldValue.toString());
        return this.m_passWord;
    }


}


 类似资料:
  • 问题内容: 我正在尝试用Java编写程序来管理我的Bookie帐户。我是java的新手,所以我认为我会选择一些简单的方法来了解事情的原理。我决定使用表格视图并使各个单元格可编辑。我一直在关注本教程http://java- buddy.blogspot.co.uk/2012/04/javafx-2-editable-tableview.html 。它详细说明了如何使用Java代码执行此操作,并将其复

  • 我使用进行单元格编辑,并在Editable=true的上使用验证器。如果选择的P:SelectoneMenu值或键入的值无效,我希望单元格编辑状态保持在编辑模式(第二个屏幕截图),并像使用常规表单(第三个屏幕截图)一样在输入周围显示红色框。当验证失败时,会显示咆哮和消息,但下拉框周围的红色框不会持续存在,我担心用户可能不会注意到(第一张屏幕截图)。我不知道如何进行ajax更新来显示红色框,但保持单

  • 问题内容: 我想将jFileChooser设置为表的单个单元格的编辑器(不使用该表的整个列,因为将使用诸如comboBox等各种其他编辑器)。有什么建议或示例代码吗?(我已经在这里研究了这些样本,如何使用Oracle的表 问题答案: 该教程的做法是正确的。请参见此示例,该示例使用未经修饰的方法来调用实际的编辑器。取而代之的是,您将使用。 附录:要应用编辑器中的任何单元格单独,覆盖了所需的行和列

  • 本文向大家介绍JavaScript使用表单元素验证表单的示例代码,包括了JavaScript使用表单元素验证表单的示例代码的使用技巧和注意事项,需要的朋友参考一下 JavaScript的主要作用:验证表单 1最简单的表单验证-禁止空白的必填项目 1.1最简单的HTML结构 网站最基础的就是注册,它是一个系统的交互基础. 例子: 1.2绑定验证功能 因为用户最后要去点击"注册"按钮,所以我们就在"注

  • 现在,我正在用Spring MVC开发一个web应用程序。 样品值可以是“0.05”、“1.00”、“12.55”等。 因此,如果有任何办法来解决这个问题,请点亮我。谢了。

  • 问题内容: 我有一个带有自定义TreeModel和自定义TreeRenderer的JTree。树模型包含一堆不同类型的对象。这些类型之一的显示方式与其他类型不同:显示的文本是对象的两个字段的串联。当我编辑单元格时,我想用编辑后的文本更新这些字段之一。到目前为止,我的工作情况还不错。 我的问题:当您在编辑时显示的文本是2个字段的完整串联值时,即使您实际上只是在编辑其中一个字段,也令人困惑。因此,当用