- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
是否有可能发现哪个对象生成了 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();
}
}
回答者应考虑以下几点:
最佳答案
您可以在文档中设置一个属性来告诉您文档属于哪个文本组件:
例如:
final JTextField field = new JTextField("");
field.getDocument().putProperty("owner", field); //set the owner
final JTextField field2 = new JTextField("");
field2.getDocument().putProperty("owner", field2); //set the owner
DocumentListener documentListener = new DocumentListener() {
public void changedUpdate(DocumentEvent documentEvent) {}
public void insertUpdate(DocumentEvent documentEvent) {
//get the owner of this document
Object owner = documentEvent.getDocument().getProperty("owner");
if(owner != null){
//owner is the jtextfield
System.out.println(owner);
}
}
public void removeUpdate(DocumentEvent documentEvent) {}
private void updateValue(DocumentEvent documentEvent) {}
};
field.getDocument().addDocumentListener(documentListener);
field2.getDocument().addDocumentListener(documentListener);
或者:
获取引发事件的文档并将其与文本字段的文档进行比较。
例子:
public void insertUpdate(DocumentEvent documentEvent) {
if (documentEvent.getDocument()== field.getDocument()){
System.out.println("event caused by field");
}
else if (documentEvent.getDocument()== field2.getDocument()){
System.out.println("event caused by field2");
}
}
关于java - 如何找到生成 DocumentEvent 的源组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218731/
我有一个带有建议弹出窗口的 JTextField。 DocumentListener 监听所有 InsertUpdate-Events 并检查建议列表并打开 Popup。如果单击弹出窗口中的建议条目,
是否可以在DocumentListener中获取根元素名称、actionCommand等...我需要获取 JTextField 名称来跟踪修改了哪个文本字段。 public void insertUp
是否有可能发现哪个对象生成了 DocumentEvent?像我可以用 ActionListener 做的事情: JTextField field = new JTextField(""); field
为了在桌面java应用程序中链接文本 block ,我从JEditorPane继承来制作文本 block 。我的问题是,在 documentEvent 中,我需要检索与关联的 JEditorPane
这个问题在这里已经有了答案: how to find source component that generated a DocumentEvent (3 个答案) 关闭 9 年前。 我有我的类(c
我有一个可编辑的 JComboBox,上面只有一个监听器。 它是一个 documentListener,当用户在组合框文本字段中插入或删除一些文本时执行一些代码: ((JTextComponent)
我是一名优秀的程序员,十分优秀!