仅当验证为True时才启用Jbutton

时间:2013-04-21 12:15:12

标签: java swing validation jbutton

验证swing应用程序输入字段(如文本字段,组合框等)的最佳方法是什么,并且只有在一切正常时,才允许用户按“保存”按钮。假设搜索功能也在同一个界面中。因此搜索记录也会填满输入字段。但在这种情况下,保存按钮应保持禁用状态。

initComponents();
        btnSave.setEnabled(false);

        txt1.getDocument().addDocumentListener(new DocumentListener() {
              @Override
              public void changedUpdate(DocumentEvent e) {

              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                    validate(txt1.getText(),e);
              }

              @Override
              public void insertUpdate(DocumentEvent e) {
                    validate(txt1.getText(),e);
              }

              public void validate(String enteredText,DocumentEvent e) {
                    String currText = "";
                    try {
                          Document doc = (Document) e.getDocument();
                          currText = doc.getText(0, doc.getLength());
                    } catch (BadLocationException e1) {
                    }

                    if(enteredText.equals(currText)){
                      //if validated successfully
                           btnSave.setEnabled(false);
                    }else{
                    btnSave.setEnabled(true);
                    }
              }
        });

3 个答案:

答案 0 :(得分:1)

你尝试过这样吗?

    final JTextField textField = new JTextField();
    final JButton submitBtn = new JButton();
    submitBtn.setEnabled(true);

    textField.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            validate(e);
        }
        public void removeUpdate(DocumentEvent e) {
            validate(e);
        }
        public void insertUpdate(DocumentEvent e) {
            validate(e);
        }

        public void validate(String enteredText) {
            String currText = "";
            try {
                Document doc = (Document)e.getDocument();
                currText = doc.getText(0, doc.getLength());
            } catch (BadLocationException e1) {
                e1.printStackTrace();
            }
            //validation of currText here

            //if validated successfully
            submitBtn.setEnabled(true);
            //else
            submitBtn.setEnabled(false);
        }
    });

答案 1 :(得分:1)

在两个地方使用enabled调整保存按钮的setEnabled()属性:

  • 在每个相关组件附带的shouldYieldFocus()InputVerifier的实施中。本教程和一些示例引用here

  • 在组件的普通侦听器中。

答案 2 :(得分:0)

创建一个方法来检查是否所有输入都已完成或/并且所有验证都已通过,最后返回一个布尔值。

public boolean validate(...){
   //some stuff
   if(validated){
     return true;
   }else{
     return false;
   }
}

然后你可以像使用它一样使用它。

button.setEnabled(validate(...));