Java 复选框节点渲染器和编辑器

Java 复选框节点渲染器和编辑器,java,swing,editor,jtree,treenode,Java,Swing,Editor,Jtree,Treenode,我已经渲染了一棵有两种节点的树 叶节点 父节点 一-表示父节点。 二,三-表示叶节点 我需要写两个独立的编辑吗? 一个用于父节点,一个用于叶节点 我能做到这一点吗 如何编写新的渲染器来渲染两种不同类型的节点?以及相应的编辑器?只需创建两个独立的TreeCellEditor实现,并将它们与类合并在一起,如下所示: public class TreeCellEditorDelegate extends DefaultTreeCellEditor { private final TreeC

我已经渲染了一棵有两种节点的树

  • 叶节点
  • 父节点
  • 一-表示父节点。 二,三-表示叶节点

    我需要写两个独立的编辑吗? 一个用于父节点,一个用于叶节点

    我能做到这一点吗


    如何编写新的渲染器来渲染两种不同类型的节点?以及相应的编辑器?

    只需创建两个独立的
    TreeCellEditor
    实现,并将它们与类合并在一起,如下所示:

    public class TreeCellEditorDelegate extends DefaultTreeCellEditor {
    
        private final TreeCellEditor    editorParent;
        private final TreeCellEditor    editorLeaf;
    
        public TreeCellEditorDelegate(
                final JTree tree,
                final DefaultTreeCellRenderer renderer,
                final TreeCellEditor editorParent,
                final TreeCellEditor editorLeaf) {
            super(tree, renderer);
            this.editorParent = editorParent;
            this.editorLeaf = editorLeaf;
        }
    
        @Override
        public Component getTreeCellEditorComponent(
                final JTree tree,
                final Object value,
                final boolean isSelected,
                final boolean expanded,
                final boolean leaf,
                final int row) {
            if (leaf)
                return editorLeaf.getTreeCellEditorComponent(tree, value, isSelected, expanded, true, row);
            else
                return editorParent.getTreeCellEditorComponent(tree, value, isSelected, expanded, false, row);
        }
    }
    

    只需创建两个独立的
    TreeCellEditor
    实现,并将它们与类合并在一起,如下所示:

    public class TreeCellEditorDelegate extends DefaultTreeCellEditor {
    
        private final TreeCellEditor    editorParent;
        private final TreeCellEditor    editorLeaf;
    
        public TreeCellEditorDelegate(
                final JTree tree,
                final DefaultTreeCellRenderer renderer,
                final TreeCellEditor editorParent,
                final TreeCellEditor editorLeaf) {
            super(tree, renderer);
            this.editorParent = editorParent;
            this.editorLeaf = editorLeaf;
        }
    
        @Override
        public Component getTreeCellEditorComponent(
                final JTree tree,
                final Object value,
                final boolean isSelected,
                final boolean expanded,
                final boolean leaf,
                final int row) {
            if (leaf)
                return editorLeaf.getTreeCellEditorComponent(tree, value, isSelected, expanded, true, row);
            else
                return editorParent.getTreeCellEditorComponent(tree, value, isSelected, expanded, false, row);
        }
    }