gpt4 book ai didi

java - 为什么 addTreeModelListener() 不起作用?

转载 作者:行者123 更新时间:2023-12-02 05:00:58 24 4
gpt4 key购买 nike

以下代码不会将监听器添加到树中(空列表):

CustomTreeModel model = (CustomTreeModel) jTree_ATree.getModel();
model.addTreeModelListener(new CustomTreeModelListener(jTree_ATree, CustomTreeModelListener.InsertionAction.EXPAND));

System.out.println("LISTENERS:");
for (CustomTreeModelListener listener : model.getListeners(CustomTreeModelListener.class)) {
System.out.println(listener);
}

注释:

  • 我的 CustomTreeModel 扩展 Java 的 DefaultTreeModel,并且不会覆盖与监听器相关的任何方法。
  • 我的 CustomTreeModelListener 实现 TreeModelListener,除了接口(interface)方法(treeNodesChangedtreeNodesInserted 等)之外,也不会覆盖任何内容.

为什么监听器没有被添加到 TreeModel 中?

最佳答案

监听器不是按其实际类存储的,而是按它们实现的监听器接口(interface)存储的。因此,要获取监听器,请使用 model.getListeners(TreeModelListener.class)。 DefaultTreeModel.getListener(...) 的 JavaDoc 中也对此进行了解释:

Returns an array of all the objects currently registered as FooListeners upon this model. FooListeners are registered using the addFooListener method.

如果你看看 DefaultTreeModel 的源代码,也很明显。 :

public void addTreeModelListener(TreeModelListener listener) 
{
listenerList.add(TreeModelListener.class, listener);
}

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
{
return listenerList.getListeners(listenerType);
}

关于java - 为什么 addTreeModelListener() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com