我正在處理添加新用戶表單,並且在驗證以下後必須啓用保存按鈕。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帖子。 –