Текст Изменено ли событие в JTextArea? Как? - PullRequest
23 голосов
/ 12 октября 2011

Я пытался создать механизм обработки событий с измененным текстом для моего 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?Если можно, то как?

Ответы [ 3 ]

43 голосов
/ 12 октября 2011

Я бы получил документ JTextArea через getDocument() (на самом деле PlainDocument) и использовал DocumentListener для прослушивания изменений.Таким образом, вы будете фиксировать изменения от нажатий клавиш, а также от событий копирования / вставки / вырезания.

35 голосов
/ 12 октября 2011

Не JTextArea, но содержащийся документ получает обновления, поэтому вам нужно:

jTextArea.getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void removeUpdate(DocumentEvent e) {

        }

        @Override
        public void insertUpdate(DocumentEvent e) {

        }

        @Override
        public void changedUpdate(DocumentEvent arg0) {

        }
    });
15 голосов
/ 12 октября 2011

Вы сравниваете строки с ==

if (currentText == textString)

Это никогда не будет правдой. Это сравнивает, являются ли строки одним и тем же объектом String. Вы должны использовать равные.

if (currentText.equals( textString) )

Вы также можете проверить DocumentListeners . См. Также Как сравнить строки в Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...