gpt4 book ai didi

java - TreeModel 接口(interface)中的方法 valueForPathChanged (Swing)

转载 作者:行者123 更新时间:2023-11-30 08:16:43 25 4
gpt4 key购买 nike

我正在实现 TreeModel interface并实现了除 valueForPathChanged 之外的所有方法。

在我的例子中,这些值不会以编程方式更改。

为什么 TreeModel 接口(interface)包含这个方法?它是否在任何情况下都被 JTree 使用,或者我可以安全地保留它未实现?

引用代码,有效。我只是担心 JTree 是否需要 valueForPathChanged:

class ParamsTreeModel implements TreeModel  {
private final TreeRoot root;
private final List<TreeModelListener> listeners = new ArrayList<TreeModelListener>();
ParamsTreeModel(TreeRoot root) {
this.root = root;
}

@Override
public void addTreeModelListener(TreeModelListener l) {
listeners.add(l);
}

@Override
public Object getChild(Object parent, int index) {
if(parent instanceof Param) return null;
if(structuredMap.containsKey(parent)) {
return structuredMap.get(parent).get(index);
}
// Root
return partNames.get(index);
}

@Override
public int getChildCount(Object parent) {
if(parent instanceof Param) return 0;
if(parent instanceof TreeRoot) return partNames.size();
return structuredMap.get(parent).size();
}

@Override
public int getIndexOfChild(Object parent, Object child) {
if(parent instanceof TreeRoot) return partNames.indexOf(child);
return structuredMap.get(parent).indexOf(child);
}

@Override
public Object getRoot() {
return root;
}

@Override
public boolean isLeaf(Object node) {
return (node instanceof Param);
}

@Override
public void removeTreeModelListener(TreeModelListener l) {
listeners.remove(l);
}

@Override
public void valueForPathChanged(TreePath path, Object newValue) {
// TODO Auto-generated method stub

}

}

最佳答案

虽然您需要实现 valueForPathChanged()方法,如 TreeModel 中定义接口(interface),您可以随意将其留空。 FileTreeModel , 引用 here ,就是一个例子。 valueForPathChanged()方法通常用于支持单元格编辑。作为具体示例,DefaultTreeModel 中的实现, 见过 here , “设置由 path 标识的 TreeNode 的用户对象,并发布节点更改 [事件]。”

关于java - TreeModel 接口(interface)中的方法 valueForPathChanged (Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28170226/

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