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);
}
}