2016-02-19 92 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