2013-11-19 4 views
0

В настоящее время я создаю TreeView, где элементы листа должны быть проверены.TreeViewer с флажком

Я создал sampleTreeView из плагина eclipse, который поставляется с предопределенной структурой дерева.

public class TreeObject { 
    private String name; 
    private TreeParent parent; 

    public TreeObject(String name) { 
     this.name = name; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setParent(TreeParent parent) { 
     this.parent = parent; 
    } 
    public TreeParent getParent() { 
     return parent; 
    } 
    public String toString() { 
     return getName(); 
    } 
    public Object getAdapter(Class<?> key) { 
    return null; 
    } 
} 


public class TreeParent extends TreeObject{ 
    private ArrayList<TreeObject> children; 
    public TreeParent(String name) { 
     super(name); 
     children = new ArrayList<TreeObject>(); 
    } 
    public void addChild(TreeObject child) { 
     children.add(child); 
     child.setParent(this); 
    } 
    public void removeChild(TreeObject child) { 
     children.remove(child); 
     child.setParent(null); 
    } 
    public TreeObject [] getChildren() { 
     return (TreeObject [])children.toArray(new TreeObject[children.size()]); 
    } 
     public boolean hasChildren() { 
     return children.size()>0; 
    } 
} 

После этого я нашел следующее tutorial. Он использует объект TreeItem, где легко прикрепить изображение. Могу ли я каким-то образом скопировать эту функцию или мне нужно использовать объект TreeItem в качестве моей структуры данных?

+0

Возможный дубликат [JTree with checkboxes] (http://stackoverflow.com/questions/1223188/jtree-with-checkboxes) – nashuald

+0

@nashuald Этот вопрос касается jView класса TreeViewer, в то время как вы указываете на JTree, который от свинг. – Basilevs

ответ

0

В учебном пособии говорится, что в начале части 2 вы должны использовать ContentProvider и LabelProvider для TreeViewer, а не использовать TreeItem, и это то, что вы должны делать.

Метод поставщика меток возвращает возвращенное/непроверенное/нулевое изображение.

Если вам необходимо изменить способ обращения к изображениям TreeViewer.update или TreeViewer.refresh, если детям объекта также необходимо освежить. Это вызовет оператора метки снова.

+0

Но как я могу назвать LabelProvider после того, как он установил встроенные изображения? – Ogofo

+0

Использовать 'TreeViewer.update' или' refresh' при изменении элементов дерева –

+0

Или, скорее, [fireLabelProviderChanged] (http://help.eclipse.org/indigo/nftopic/org.eclipse.platform.doc.isv/reference/api /org/eclipse/jface/viewers/BaseLabelProvider.html#fireLabelProviderChanged%28org.eclipse.jface.viewers.LabelProviderChangedEvent%29) – Basilevs