相关疑难解决方法(0)

如何查找生成DocumentEvent的源组件

是否有可能发现哪个项目生成了DocumentEvent?像我可以用ActionListener做的事情:

JTextField field = new JTextField("");
field.addActionListener(actionListener);

//inside ActionListener
public void actionPerformed(ActionEvent arg0) {
  if (arg0.getSource() instanceof JTextField) //true

}
Run Code Online (Sandbox Code Playgroud)

我想对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(); 
  }
}
Run Code Online (Sandbox Code Playgroud)

答案者应该考虑以下几点:

  1. 为了我的目的,知道生成事件的对象类型是不够的,但我需要在运行时引用它.
  2. 通常,事件是从swing对象的扩展(myComp public JTextField)生成的.这些对象存储应在运行时在侦听器方法内检索的其他信息(例如,insertUpdate)
  3. DocumentListener是从一个不知道生成事件的字段的类实现的.不同类型的差异字段可以在运行时附加到侦听器.

java swing document properties jtextfield

15
推荐指数
1
解决办法
8428
查看次数

标签 统计

document ×1

java ×1

jtextfield ×1

properties ×1

swing ×1