我正在处理添加新用户表单,并且在验证以下后必须启用保存按钮。Java-JTextField验证
1.用户名字段必须包含一些字母(正确或错误的用户名)。
2.密码字段和验证密码字段必须包含一些字母(无论是正确的密码还是错误的密码)。
我正在处理添加新用户表单,并且在验证以下后必须启用保存按钮。Java-JTextField验证
1.用户名字段必须包含一些字母(正确或错误的用户名)。
2.密码字段和验证密码字段必须包含一些字母(无论是正确的密码还是错误的密码)。
像这样的东西可能适合你。这个例子不是独立的。你需要创建表单,主要等等......我只关注如何处理检查以在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());
}
});
但是需要模式代码...
@Sandun Suranga Wijenayaka - 如果你有两个以上的领域呢?你甚至看过提供更通用解决方案的其他解决方案吗?你甚至回应了其他帖子,说明你找到了答案。这正是你不应该交叉发帖的原因。这里给出的答案与其他帖子中给出的答案相同。这个人不应该花时间给出相同的答案。你应该删除这个问题。 – camickr
你不需要'FocusListeners',你可以用'InputVerifier's来做到这一点,参见[验证输入](http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html#inputVerification ) 更多细节 – MadProgrammer
所以你到目前为止尝试做到这一点。 – Satya
Cross发布:http://www.coderanch.com/t/662266/GUI/java/Adding-validations-form退出交叉发布。它讨厌花时间回答一个问题,只是发现它已经被回答。 – camickr
好的,感谢您的提醒。回答后,我没有注意到我的coderanch帖子。 –