首页 > 代码库 > JFace中的表格型树TableTreeViewer
JFace中的表格型树TableTreeViewer
表格型树是用TableTreeViewer来实现,自从SWT下的TableTree被废弃之后,其扩展TableTreeViewer也成了鸡肋,不再被建议使用,既然Tree可以实现表格型树,那么其扩展TreeView当然也没有问题,用TreeViewer实现的表格型树,之前的TreeViewer实例菜单的呢过功能代码不用做任何修改.
修改的不多,一是在主程序为树加上几列对象TreeColumn,二是创建一个新的表格型树的标签器,关于TreeColumn在Tree组件的时候有此内容的讲解.这个地方和之前一样.
TreeViewer3.java
1 public class TreeViewer3 { 2 public static void main(String[] args) { 3 new TreeViewer3().open(); 4 } 5 6 public void open() { 7 final Display display = new Display(); 8 final Shell shell = new Shell(); 9 shell.setSize(300, 300);10 // -----------界面核心代码-------------------11 shell.setLayout(new FillLayout());12 TreeViewer tv = new TreeViewer(shell, SWT.BORDER);13 14 Tree tree = tv.getTree();15 tree.setHeaderVisible(true);16 TreeColumn column = new TreeColumn(tree, SWT.LEFT);17 column.setText("名称");18 column.setWidth(150);19 column = new TreeColumn(tree, SWT.LEFT);20 column.setText("子结点数");21 column.setWidth(80);22 column = new TreeColumn(tree, SWT.LEFT);23 column.setText("性别");24 column.setWidth(40);25 26 tv.setContentProvider(new TreeViewerContentProvider());27 tv.setLabelProvider(new MyTableLableProvider());28 // 和TableViewer一样,数据的入口也是setInput方法29 List<Country> input = (List)DataFactory.createTreeData();30 tv.setInput(input);31 // --------------插入代码:START------------------32 MyActionGroup actionGroup = new MyActionGroup(tv);// 生成一个ActionGroup对象33 actionGroup.fillContextMenu(new MenuManager());// 将按钮注入到菜单对象中34 // -----------END------------------35 shell.open();36 while (!shell.isDisposed()) {37 if (!display.readAndDispatch())38 display.sleep();39 }40 display.dispose();41 }42 }
标签器换了一个,它必须实现ITableLabelProvider接口.
1 public class MyTableLableProvider implements ITableLabelProvider { 2 public String getColumnText(Object element, int columnIndex) { 3 ITreeEntry entry = (ITreeEntry) element; 4 switch (columnIndex) { 5 case 0: 6 return entry.getName(); 7 case 1: 8 List list = entry.getChildren(); 9 if (list == null)10 return "";11 return String.valueOf(list.size());12 case 2:13 if (entry instanceof People) {14 boolean sex = ((People) entry).isSex();15 return sex ? "男" : "女";16 }17 return "";18 default:19 return "";20 }21 }22 23 public Image getColumnImage(Object element, int columnIndex) {24 return null;25 }26 public void addListener(ILabelProviderListener listener) {}27 public void removeListener(ILabelProviderListener listener) {}28 public void dispose() {}29 public boolean isLabelProperty(Object element, String property) {30 return false;31 }32 }
JFace中的表格型树TableTreeViewer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。