Rumah >Java >javaTutorial >Bagaimana untuk Mengesan Perubahan Nilai JTextField Serta-merta Tanpa Menekan Enter?

Bagaimana untuk Mengesan Perubahan Nilai JTextField Serta-merta Tanpa Menekan Enter?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 08:07:17736semak imbas

How to Detect JTextField Value Changes Immediately Without Pressing Enter?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn