JTextField の値変更リスナー
多くの開発者は、ユーザーがテキスト フィールドで Enter キーを押した後にのみアクション リスナーがトリガーされるという問題に遭遇しています。 。これを修正するには、値の変更をすぐに検出できる別のアプローチを採用する必要があります。
解決策は、「ActionListener」の代わりに「DocumentListener」を使用することです。テキスト フィールドの基になるドキュメントは、その内容の変更を自動的にリッスンします。このドキュメントにリスナーを追加すると、ユーザーがテキストを変更するとすぐに特定のアクションを実行できます。
「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); } } });
Thisコードは、テキスト フィールドへの入力が条件 (正の整数) を満たさなくなるとすぐにエラー メッセージをトリガーします。 Enter キーを押したり、追加のアクションを実行したりする必要はありません。
そのため、Enter キーを押すように「ActionEvents」をリッスンする「ActionListener」に依存する代わりに、ドキュメント内の変更を監視する「DocumentListener」を利用します。 、テキストの変更に対して即座に反応できるようになります。
以上がEnterを押さずにJTextField値の変更を即座に検出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。