如何查找生成文档事件的源组件
2022-09-03 00:20:08
是否有可能发现哪个对象生成了 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();
}
}
answser应考虑以下几点:
- 出于我的目的,知道生成事件的对象类型是不够的,但我需要在运行时引用它。
- 通常,这些事件是从 swing 对象(myComp 公共 JTextField)的扩展生成的。这些对象存储应在运行时在侦听器方法(es. insertUpdate)内检索的其他信息
- DocumentListener 是从不知道生成事件的字段的类实现的。可以在运行时将不同类型的不同字段附加到侦听器。