Value Change Listener untuk JTextField
Ramai pembangun telah menghadapi isu pendengar tindakan hanya tercetus selepas pengguna menekan masuk dalam medan teks . Untuk membetulkan perkara ini, kita perlu menggunakan pendekatan berbeza yang boleh mengesan perubahan nilai dengan segera.
Penyelesaian terletak pada penggunaan "DocumentListener" dan bukannya "ActionListener." Dokumen asas medan teks secara automatik mendengar sebarang perubahan dalam kandungannya. Dengan menambahkan pendengar pada dokumen ini, kami boleh melaksanakan tindakan tertentu sebaik sahaja pengguna mengubah teks.
Berikut ialah coretan kod diubah suai yang menggabungkan "DocumentListener":
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); } } });
Ini kod akan mencetuskan mesej ralat sebaik sahaja input dalam medan teks tidak lagi memenuhi syarat (integer positif). Tidak perlu menekan enter atau melakukan sebarang tindakan tambahan.
Jadi, daripada bergantung pada "ActionListener", yang mendengar "ActionEvents" seperti menekan enter, kami memanfaatkan "DocumentListener" yang melihat perubahan dalam dokumen , membenarkan tindak balas segera kepada pengubahsuaian teks.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Perubahan Nilai JTextField Serta-merta Tanpa Menekan Enter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!