Можно ли узнать, какой объект сгенерировал DocumentEvent? Что-то вроде того, что я могу сделать с ActionListener:
JTextField field = new JTextField("");
field.addActionListener(actionListener);
//inside ActionListener
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() instanceof JTextField) //true
}
Я хотел бы сделать то же самое с DocumentEvent, но, похоже, не работает так:
JTextField field = new JTextField("");
field.getDocument.addDocumentListener(documentListener);
//inside documentListener
public void insertUpdate(DocumentEvent){
if (arg0.getSource() instanceof JTextField) //false: class is javax.swing.text.PlainDocument
if (arg0.getSource() instanceof MyComponent){
MyComponent comp = (MyComponent)arg0.getSource();
comp.callSpecificMethodUponMyComp();
}
}
Ответчик должен учитывать следующие моменты:
- Для моих целей недостаточно знать тип объекта, который сгенерировал событие, но мне нужна ссылка на него во время выполнения.
- Как правило, события генерируются из расширения объекта колебания (myComp public JTextField). Эти объекты хранят дополнительную информацию, которая должна быть получена во время выполнения внутри метода слушателя (например, insertUpdate)
- DocumentListener реализован из класса, который не знает полей, которые генерировали события. Дифференциальные поля разных типов могут быть присоединены к слушателю во время выполнения.