CheckBox Node Renderer и редактор - PullRequest
       22

CheckBox Node Renderer и редактор

1 голос
/ 31 января 2012

Я отрисовал дерево с двумя видами узлов.

  1. Узлы листа
  2. Родительские узлы

enter image description here

Один - представляет родительский узел. Два, три - представляет листовые узлы.

И мне нужно написать два отдельных редактора? Один для родительских узлов и один для конечных узлов?

Хоа, я могу это сделать?

Как мне написать новый рендерер для рендеринга двух разных типов узлов? И соответствующий редактор для них?

1 Ответ

1 голос
/ 31 января 2012

Просто создайте две отдельные 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);
    }
}
...