Как получить имя JTextField, в котором находится документ? - PullRequest
3 голосов
/ 25 апреля 2011

Есть ли что-то вроде event.getSource для DocumentListener?Я пытаюсь изменить цвет только одного JTextField, в котором меняется текст.Вот мой DocumentListener:

DocumentListener posluchac = new DocumentListener() {
        public void changedUpdate(DocumentEvent e) {
            warn(e);
        }
        public void removeUpdate(DocumentEvent e) {
            warn(e);
        }
        public void insertUpdate(DocumentEvent e) {
            warn(e);
        }
        public void warn(DocumentEvent e) {
            txtName.setBackground(Color.WHITE);
            txtSurname.setBackground(Color.WHITE);
            txtPersonalNumber.setBackground(Color.WHITE);
            txtDateOfBirth.setBackground(Color.WHITE);
        }
    };

Если нет ничего похожего на .getSource() для DocumentListener.Как это сделать?

1 Ответ

4 голосов
/ 25 апреля 2011

Вы правы, нет getSource(), как у некоторых других слушателей, но вы можете использовать putProperty() и getProperty() класса Document для достижения того, что вы ищете.

вы можете сделать

JTextField jTextField = new JTextField("Text 1");
jTextField.getDocument().putProperty("parent", jTextField);

и

позже в событиях DocumentListener, вы можете получить родителя следующим образом

JTextField textField = (JTextField) e.getDocument().getProperty("parent");

где е DocumentEvent

...