2016-02-19 52 views
0

我正在处理添加新用户表单,并且在验证以下后必须启用保存按钮。Java-JTextField验证

1.用户名字段必须包含一些字母(正确或错误的用户名)。

2.密码字段和验证密码字段必须包含一些字母(无论是正确的密码还是错误的密码)。

+1

所以你到目前为止尝试做到这一点。 – Satya

+0

Cross发布:http://www.coderanch.com/t/662266/GUI/java/Adding-validations-form退出交叉发布。它讨厌花时间回答一个问题,只是发现它已经被回答。 – camickr

+0

好的,感谢您的提醒。回答后,我没有注意到我的coderanch帖子。 –

回答

1

像这样的东西可能适合你。这个例子不是独立的。你需要创建表单,主要等等......我只关注如何处理检查以在JTextField焦点丢失时启用Save按钮。

1)加上一个失去焦点事件的文本字段,如下所示:

private JTextField getTxtUser() { 
    if (txtUser == null) { 
     txtUser = new JTextField(); 
     txtUser.addFocusListener(new java.awt.event.FocusAdapter() { 
      @Override 
      public void focusLost(java.awt.event.FocusEvent e) { 
       getBtnSave().setEnabled(
        !getTxtUser().getText().isEmpty() && 
        !getTxtPass().getText().isEmpty()); 
      } 
     }); 
    } 
    return txtUser; 
} 

private JTextField getTxtPass() { 
    if (txtPass == null) { 
     txtPass = new JTextField(); 
     txtPass.addFocusListener(new java.awt.event.FocusAdapter() { 
      @Override 
      public void focusLost(java.awt.event.FocusEvent e) { 
       getBtnSave().setEnabled(
        !getTxtUser().getText().isEmpty() && 
        !getTxtPass().getText().isEmpty()); 
      } 
     }); 
    } 
    return txtPass; 
} 

private JButton getBtnSave() { 
    if (btnSave == null) { 
     btnSave = new JButton("Save"); 
     btnSave.setEnabled(false); 
    } 
} 

一个更好的办法可能是一个事件侦听器添加到周围的文件JTextField的内部如下:

   txtUser.getDocument().addDocumentListener(new DocumentListener() { 

        @Override 
        public void removeUpdate(DocumentEvent e) { 
       getBtnSave().setEnabled(
        !getTxtUser().getText().isEmpty() && 
        !getTxtPass().getText().isEmpty()); 
        } 

        @Override 
        public void insertUpdate(DocumentEvent e) { 
       getBtnSave().setEnabled(
        !getTxtUser().getText().isEmpty() && 
        !getTxtPass().getText().isEmpty()); 
        } 

        @Override 
        public void changedUpdate(DocumentEvent e) { 
       getBtnSave().setEnabled(
        !getTxtUser().getText().isEmpty() && 
        !getTxtPass().getText().isEmpty()); 
        } 
       }); 

但是需要模式代码...

+0

@Sandun Suranga Wijenayaka - 如果你有两个以上的领域呢?你甚至看过提供更通用解决方案的其他解决方案吗?你甚至回应了其他帖子,说明你找到了答案。这正是你不应该交叉发帖的原因。这里给出的答案与其他帖子中给出的答案相同。这个人不应该花时间给出相同的答案。你应该删除这个问题。 – camickr

+1

你不需要'FocusListeners',你可以用'InputVerifier's来做到这一点,参见[验证输入](http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html#inputVerification ) 更多细节 – MadProgrammer