gpt4 book ai didi

java - 如何将 TreeModelListener 添加到 NetBeans 大纲?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:53 26 4
gpt4 key购买 nike

我正在使用 NetBeans Outline 模型创建一个 TreeTable,技术描述为 here :

一切看起来都干净整洁,我现在想在我的模型中添加一个 TreeModelListener 来监听模型中的变化:

Outline outline = new Outline();
MyNode root = new MyNode("data", 0);
//...
TreeModel treeMdl = new MyTreeModel(root);
OutlineModel mdl =
DefaultOutlineModel.createOutlineModel(treeMdl, new MyRowModel(), true, "Data");
mdl.addTreeModelListener(new MyTreeModelListener());
outline.setModel(mdl);
//...

public class MyTreeModelListener implements TreeModelListener {
public void treeNodesChanged(TreeModelEvent e) {
System.out.println("Something happend");

}

public void treeNodesInserted(TreeModelEvent e) {
// TODO Auto-generated method stub

}

public void treeNodesRemoved(TreeModelEvent e) {
// TODO Auto-generated method stub

}

public void treeStructureChanged(TreeModelEvent e) {
// TODO Auto-generated method stub

}

}

一切都按预期工作,但我的问题如下,我已经编写了自己的 TreeModel 类,这显然意味着我必须编写自己的 addTreeModelListener 方法,但我该怎么做呢?

public class MyTreeModel implements TreeModel {

private MyNode root;

public MyTreeModel(SdbNode root) {
this.root = root;
}

@Override
public void addTreeModelListener(TreeModelListener l) {
//TODO:
}

//...
}

最佳答案

javax.swing.event.EventListenerList 将处理大部分繁重的工作。 addremovegetListeners 方法的类参数允许您将所有监听器存储在一个列表中,然后提取其中的一个子集只有你想要的类型。

注意:类参数是接口(interface)的类,不是实现的类。

基本上是这样的:

    private EventListenerList listeners = null;

public void addTreeModelListener(TreeModelListener l) {
if (l == null)
return;
if (listeners == null)
listeners = new EventListenerList();
listeners.add(TreeModelListener.class, l);
}

public void removeTreeModelListener(TreeModelListener l) {
if (l == null)
return;
if (listeners == null)
return;
listeners.remove(TreeModelListener.class, l);
}

private void fireTreeStructureChanged(TreeModelEvent e) {
if (e == null)
return;
if (listeners == null)
return;
TreeModelListener[] ll = listeners.getListeners(TreeModelListener.class);
for(int i = 0; i < ll.length; i++)
ll.treeStructureChanged(e);
}

如果您支持其余的模型通知,则需要对调用 treeNodesInsertedtreeNodesRemovedtreeNodesChanged 的​​最后一个方法实现变体

关于java - 如何将 TreeModelListener 添加到 NetBeans 大纲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2089761/

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