日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JFace中的表格型树TableTreeViewer

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JFace中的表格型树TableTreeViewer 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

表格型樹是用TableTreeViewer來實現(xiàn),自從SWT下的TableTree被廢棄之后,其擴(kuò)展TableTreeViewer也成了雞肋,不再被建議使用,既然Tree可以實現(xiàn)表格型樹,那么其擴(kuò)展TreeView當(dāng)然也沒有問題,用TreeViewer實現(xiàn)的表格型樹,之前的TreeViewer實例菜單的呢過功能代碼不用做任何修改.

修改的不多,一是在主程序為樹加上幾列對象TreeColumn,二是創(chuàng)建一個新的表格型樹的標(biāo)簽器,關(guān)于TreeColumn在Tree組件的時候有此內(nèi)容的講解.這個地方和之前一樣.

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("子結(jié)點數(shù)"); 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一樣,數(shù)據(jù)的入口也是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 }

標(biāo)簽器換了一個,它必須實現(xiàn)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 }

轉(zhuǎn)載于:https://www.cnblogs.com/DreamDrive/p/4178219.html

總結(jié)

以上是生活随笔為你收集整理的JFace中的表格型树TableTreeViewer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。