2012-01-31 3 views
1

Я отобрал дерево с двумя типами узлов.CheckBox Node Renderer and Editor

  1. листьев Узлы
  2. родительских узлов

enter image description here

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

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

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

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

ответ

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^