1. ホーム

[解決済み】JTextFieldへの値変更リスナー

2022-04-04 06:30:51

質問

ユーザーがテキストフィールドの値を変更した直後に、メッセージボックスを表示させたいのです。現在、メッセージボックスをポップアウトさせるためには、エンターキーを押す必要があります。私のコードに何か問題があるのでしょうか?

textField.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {

        if (Integer.parseInt(textField.getText())<=0){
            JOptionPane.showMessageDialog(null,
                    "Error: Please enter number bigger than 0", "Error Message",
                    JOptionPane.ERROR_MESSAGE);
        }       
    }
}

何かお手伝いできることがあれば、ぜひお願いします。

解決方法は?

自動的に作成される基礎となるドキュメントにリスナーを追加します。

// Listen for changes in the text
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);
     }
  }
});