使用文字欄位值變更監聽器取得即時輸入驗證
為了對使用者輸入進行及時回饋,訊息方塊必須顯示為當用戶修改文字欄位中的文字時。然而,面對按 Enter 鍵後才觸發訊息框的問題,讓我們深入研究程式碼並找到解決方案。
程式碼在文字欄位上使用了 ActionListener,當有任何動作時都會呼叫該 ActionListener發生在欄位上,包括按 Enter 鍵。此行為解釋了使用 Enter 鍵後出現訊息框的原因。為了解決這個問題,我們需要對文字欄位值的變化做出更即時的回應。
解決方案在於為文字欄位的底層 Document 新增監聽器。為每個文字欄位自動建立的文件表示文字內容。透過監視文件中的更改,我們可以響應文字中的任何更改,無論使用者的輸入方法如何。
這是更新的程式碼片段:
textField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { warn(); } public void removeUpdate(DocumentEvent e) { warn(); } public void insertUpdate(DocumentEvent e) { warn(); } public void warn() { if (Integer.parseInt(textField.getText())<=0){ JOptionPane.showMessageDialog(null, "Error: Please enter number bigger than 0", "Error Message", JOptionPane.ERROR_MESSAGE); } } });
此修改後的程式碼新增了文字欄位的 DocumentListener,它對文件層級的變更做出反應。根據對文字的修改類型呼叫三種不同的 Update 方法(更改、刪除、插入),從而有效地立即驗證使用者的輸入。
以上是如何在不按 Enter 鍵的情況下立即在文字欄位中進行輸入驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!