JFace TreeViewer简单示例
2015-01-16 22:36
507 查看
SWT/JFace控件中最复杂的应该是TreeViewer吧,每次要实现一个TreeViewer都得想半天,这回发现JFace本身包含一个TreeNode(org.eclipse.jface.viewers.TreeNode)和TreeNodeContentProvider(org.eclipse.jface.viewers.TreeNodeContentProvider)的实现,参考写了一个基本通用的示例。
TreeNode:
TreeContentProvider:
TreeLabelProvider
复制去Google翻译翻译结果
org.eclipse.jface.viewers.TreeNode
TreeNode:
import java.util.ArrayList; import java.util.List; public abstract class TreeNode { protected TreeNode parent; protected List children = new ArrayList(); public abstract String getName(); public abstract void setName(String name); public TreeNode getParent() { return parent; } public void setParent(TreeNode parent) { this.parent = parent; } public TreeNode[] getChildren() { return (TreeNode[]) children.toArray(new TreeNode[children.size()]); } public void setChildren(List children) { this.children = children; } public boolean hasChildren(){ return this.children.size() > 0; } public void addChild(TreeNode child){ this.children.add(child); } public void removeChild(TreeNode child){ this.children.remove(child); child.setParent(null); } public void addChild(int index, TreeNode child){ this.children.add(index, child); } public void setChild(int index, TreeNode child){ this.children.set(index, child); } public void removeChild(int index){ this.children.remove(index); } public void removeAllChildren() { this.children.clear(); } public String toString(){ return getName(); } }
TreeContentProvider:
import org.eclipse.jface.viewers.TreeNodeContentProvider; import org.eclipse.jface.viewers.Viewer; public class TreeContentProvider extends TreeNodeContentProvider{ @Override public Object[] getChildren(Object element) { if(element != null) { if(element instanceof TreeNode){ return ((TreeNode)element).getChildren(); } return new Object[0]; } return new Object[0]; } @Override public Object getParent(Object element) { if(element != null) { if(element instanceof TreeNode){ return ((TreeNode)element).getParent(); } return null; } return null; } @Override public Object[] getElements(Object inputElement) { if(inputElement instanceof TreeNode[]){ return (TreeNode[])inputElement; } return new Object[0]; } @Override public boolean hasChildren(Object element) { if(element != null) { if(element instanceof TreeNode){ return ((TreeNode)element).hasChildren(); } return false; } return false; } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { //TODO } }
TreeLabelProvider
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; public class TreeLabelProvider extends LabelProvider { private Map imageCache = new HashMap(10); @Override public String getText(Object element) { if(element != null) { if(element instanceof TreeNode) { return ((TreeNode)element).getName(); } else { return ""; } } return ""; } @Override public Image getImage (Object element) { if (element != null) { ImageDescriptor descriptor = null; if (element instanceof TreeNode) { if (element instanceof TreeNode) { descriptor = Activator.imageDescriptorFromPlugin (Activator.PLUGIN_ID , "icons/node.png"); } Image image = (Image)imageCache.get(descriptor); if(image == null) { image = descriptor.createImage(); imageCache.put(descriptor, image); } return image; } else { return null; } } return null; } @Override public void dispose() { for(Iterator i = imageCache.values().iterator(); i.hasNext();) { ((Image)i.next()).dispose(); } imageCache.clear(); } }
复制去Google翻译翻译结果
org.eclipse.jface.viewers.TreeNode
相关文章推荐
- NFace TreeViewer 和ListViewer(JFace Viewer在.Net中的简单实现)
- SWT/Jface TreeViewer 上移和下移按钮的简单实现
- Swt/Jface treeViewer的使用
- Swt/Jface treeViewer的使用
- JFace checkboxTreeViewer 使用记录
- Swt/Jface treeViewer的使用
- SWT/Jface TreeViewer、Tree如何实现双击事件
- 关于JFace中的TableViewer和TreeViewer中的
- SWT/Jface treeviewer 拖拽样式
- Swt/Jface treeViewer的使用
- JFace TreeViewer使用
- 关于JTree的简单示例的补充,处理TreeSelectionEvent事件!
- JFace TreeViewer组件
- JFace TreeViewer理解和用法
- JFace TreeViewer使用
- Swt/Jface treeViewer的使用
- ExtJS中tree结合PHP的简单示例
- JFace TreeViewer使用
- SWT/Jface TreeViewer 如何刷新后,展开原来的节点
- JFace中的表格型树TableTreeViewer