【问题标题】:Advice needed with disabling a JButton until required fields have been filled in - Java在填写必填字段之前禁用 JButton 所需的建议 - Java
【发布时间】:2012-10-27 16:00:07
【问题描述】:

我正在制作一个快递程序,用户可以在其中创建一个新帐户。 我想要一个用户在填写文本字段之前无法按下的下一步按钮。

所以一个空白的姓名字段和姓氏字段意味着无法按下下一个按钮,但如果字段已填写,则可以按下下一个按钮

【问题讨论】:

    标签: java jbutton textfield


    【解决方案1】:

    将这样的 KeyListener 添加到您的字段中:

    nameField.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                super.keyReleased(e);
                if(nameField.getText().length() > 0 && surNameField.getText().length() > 0)
                    nextButton.setEnabled(true);
                else
                    nextButton.setEnabled(false);
            }
        });
    

    这将检查两个字段是否不为空,每次在字段中按下一个键。如果条件为真,将启用下一步按钮。

    【讨论】:

    • 没问题。如果用户再次删除文本,您也不会禁用该按钮。已更新答案以反映这一点。
    • 它不适用于 nameField.getText().length() > 0 || surNameField.getText().length() > 0
    【解决方案2】:

    简单来说,试试类似的东西。

    String text = textField.getText();
    if (text.length()>0)
       button.setEnabled(true);
     ...
    

    如果你想动态启用按钮,那么它有点复杂

    编辑:

    复杂案例:

    Document textFieldDoc = myTextField.getDocument();
    textFieldDoc.addDocumentListener(new DocumentListener() {
     void changedUpdate(DocumentEvent e) {
       updated(e);
    }
    void insertUpdate(DocumentEvent e) {
       updated(e);
    }
    void removeUpdate(DocumentEvent e) {
       updated(e);
    }
    private void updated(DocumentEvent e) {
       boolean enable = e.getDocument().getLength() > 0;
       myButton.setEnabled(enable);
    }
    });
    

    【讨论】:

    • 在这种情况下,您必须添加一个文档侦听器,每当用户修改文本字段时都会收到通知,然后在更新功能中您可以设置启用按钮
    【解决方案3】:

    在你的actionPerformed方法中,对于每一个actionEvent检查,检查必填字段是否被填满,如果是,设置你的按钮setEnabled(true)。如果您可以向我们展示您的代码,也许可以提供更好的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2018-11-21
      • 2023-03-23
      相关资源
      最近更新 更多