私はJTextArea
のテキスト変更イベント処理メカニズムを作成しようとしています。私の目的では、JTextArea
のテキストに変更があるたびにイベントを発生させる必要があります。 KeyListener
インターフェイスを使用してみましたが、ここに私のコードがあります。
txtArea.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
currentText = text.getText();
if (currentText == textString)
JOptionPane.showMessageDialog(null, "Correct");
}
});
テキストエリアのテキストがハードコードされたテキストと一致した場合、何も起こりませんでした。このためにイベント変更イベントを作成するにはどうすればよいですか。
この目的はPropertyChangedListener
で達成できますか?できれば、どうやって?
getDocument()
(実際にはPlainDocument)を介してJTextAreaのドキュメントを取得し、変更をリッスンするために DocumentListener を使用します。この方法では、キーストロークからの変更と、コピー/貼り付け/切り取りイベントからの変更をキャプチャします。
JTextAreaではなく、含まれているドキュメントが更新を受け取るため、次のものが必要です。
jTextArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void insertUpdate(DocumentEvent e) {
}
@Override
public void changedUpdate(DocumentEvent arg0) {
}
});
==で文字列を比較しています
if (currentText == textString)
これは決して真実ではありません。これは、文字列が同じStringオブジェクトかどうかを比較します。等しいを使用する必要があります。
if (currentText.equals( textString) )
DocumentListeners をチェックアウトすることもできます。こちらもご覧ください Javaで文字列を比較するにはどうすればよいですか?