方法值在树模型接口(摆动)中更改的路径



我正在实现TreeModel接口,并且已经实现了除valueForPathChanged之外的所有方法。

就我而言,这些值不会以编程方式更改。

为什么树模型接口包含此方法?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 接口中定义),但您可以自由地将其留空。 这里引用的FileTreeModel就是一个例子。valueForPathChanged()方法通常用于支持单元格编辑。作为一个具体的例子,这里看到的 DefaultTreeModel 中的实现"设置由 path 标识的TreeNode的用户对象,并发布节点更改 [事件]。

相关内容

  • 没有找到相关文章

最新更新