Evento di testo modificato in JTextArea? Come?

Ho cercato di rendere un testo modificato il meccanismo di gestione degli eventi per il mio JTextArea . Per i miei scopi un evento deve essere licenziato ogni volta che c’è un cambiamento nel testo di JTextArea . Ho provato a utilizzare l’interfaccia KeyListener e qui è il mio codice per questo.

 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"); } }); 

Non è successo nulla quando il testo dell’area di testo corrispondeva al testo hardcoded. Come può essere modificato un evento per questo.
Questo objective può essere raggiunto con PropertyChangedListener ? Se può, allora come?

Avrei ottenuto il documento di getDocument() tramite getDocument() (un object PlainDocument) e userei un DocumentListener per ascoltare le modifiche. In questo modo acquisirai le modifiche da tratti chiave e anche da eventi copia / incolla / taglia.

Non su JTextArea, ma il documento contenuto riceve aggiornamenti, quindi è necessario:

 jTextArea.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent arg0) { } }); 

Stai confrontando le stringhe con ==

 if (currentText == textString) 

Questo non sarà mai vero. Questo confronta se le stringhe sono lo stesso object String. Dovresti usare gli uguali.

 if (currentText.equals( textString) ) 

Potresti anche voler controllare DocumentListeners . Vedi anche questo Come faccio a confrontare le stringhe in Java?