亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 使用Annotation以1行代碼完成一個TableViewer

使用Annotation以1行代碼完成一個TableViewer
2010-01-14 23:13:47  作者:  來源:
最近一直在找一個方便的SWT開發方法...但是還是陷入了寫一個TableViewer就得200多行(包括 Table ContentProvider...Sorter..)等等..也用了些設計模式,不過還是要寫很多,這件事情真讓人沮喪。昨天想到用注解( Annotation)嘗試著完成這個工作,今天早晨就開始做了,終于一天的時間把它做了出來,效果十分令人滿意,本來200多行的代碼現在變成了3行..我從來沒想過TableViewer可以那么容易的創建,確實反射機制給java增添了無限的擴展^^


好的下面展示一下用這個工具編寫一個TableViewer的

清單1 DTO 在get方法上做的注解最終將被用作創建TableViewer
Java代碼 復制代碼
  1. package solonote.common.swt.test;   
  2.   
  3. import java.util.Date;   
  4.   
  5. import solonote.common.swt.table.ColumnAnnotation;   
  6.   
  7. /**  
  8.  * 測試用的DTO  
  9.  * @author solonote  
  10.  * @version 0.1.0 2007-12-17 下午07:40:28  
  11.  */  
  12. public class TestDTO{   
  13.   
  14.     private String string;   
  15.        
  16.     private Date date;   
  17.        
  18.     private int integer;   
  19.        
  20.     @ColumnAnnotation(   
  21.             header = "字符", index = 0, imageBundleId = "solonote.common.swt",   
  22.             imangURL = "/icon/hourglass.png", width = 120)   
  23.     public String getString() {   
  24.         return string;   
  25.     }   
  26.   
  27.     public void setString(String string) {   
  28.         this.string = string;   
  29.     }   
  30.   
  31.   
  32.     @ColumnAnnotation(   
  33.         header = "日期", index = 1,   
  34.         imangURL = "icon/error.png", width = 180)          
  35.     public Date getDate() {   
  36.         return date;   
  37.     }   
  38.   
  39.     public void setDate(Date date) {   
  40.         this.date = date;   
  41.     }   
  42.   
  43.     @ColumnAnnotation(   
  44.             header = "數字", index = 2,   
  45.             imangURL = "icon/a.png", isSort = false,    
  46.             width = 100)   
  47.     public int getInteger() {   
  48.         return integer;   
  49.     }   
  50.   
  51.     public void setInteger(int integer) {   
  52.         this.integer = integer;   
  53.     }   
  54. }  


清單2 執行程序
Java代碼 復制代碼
  1. package solonote.common.swt.test;   
  2.   
  3. import java.util.Date;   
  4.   
  5. import org.eclipse.jface.viewers.TableViewer;   
  6. import org.eclipse.swt.SWT;   
  7. import org.eclipse.swt.layout.FillLayout;   
  8. import org.eclipse.swt.widgets.Display;   
  9. import org.eclipse.swt.widgets.Shell;   
  10. import org.eclipse.swt.widgets.Table;   
  11.   
  12. import solonote.common.swt.table.TableRender;   
  13.   
  14. public class TestTable {   
  15.   
  16.     public static void main(String[] args) throws Exception {   
  17.         final Display display = Display.getDefault();   
  18.         final Shell shell = new Shell();   
  19.         shell.setLayout(new FillLayout());   
  20.         shell.setSize(420375);   
  21.         shell.setText("SWT Application");   
  22.         shell.open();   
  23.         //定義表格   
  24.         Table table = new Table(shell, SWT.FULL_SELECTION | SWT.BORDER);   
  25.         table.setLinesVisible(true);   
  26.         table.setHeaderVisible(true);   
  27.            
  28.         //一行代碼創建TableViewer   
  29.         TableViewer tableViewer =TableRender.renderTable(table, TestDTO.class);   
  30.         //定義表格結束   
  31.            
  32.         //定義數據   
  33.         TestDTO dto1 = new TestDTO();   
  34.         dto1.setString("bbc");   
  35.         dto1.setDate(new Date());   
  36.         dto1.setInteger(13);   
  37.            
  38.         TestDTO dto2 = new TestDTO();   
  39.         dto2.setString("abc");   
  40.         dto2.setDate(new Date(dto1.getDate().getTime() + 800));   
  41.         dto2.setInteger(11);   
  42.         tableViewer.setInput(new TestDTO[]{dto1,dto2});   
  43.                
  44.         shell.layout();   
  45.         while (!shell.isDisposed()) {   
  46.             if (!display.readAndDispatch())   
  47.                 display.sleep();   
  48.         }   
  49.     }   
  50.   
  51. }  


好的,運用的設計模式什么都直接看doc和源代碼吧 注釋很全的,

自己認為這個工具還是可以幫助你的,需要更強大的功能請自己擴展,

這個小工具在此GPL3下開源 http://www.gnu.org/licenses/gpl-3.0.txt

看懂源代碼您還需要以下知識:

Swt Jface 關于Table和TableViewer的知識

Annotation的知識

關于java反射機制的知識

設計模式:工廠方法、策略模式、適配器模式

轉載請附帶此bolg文章的鏈接,感謝

20071218 10:44 增加了對每一列的位置控制,將注解由原來的字段上移到了get方法上,增加了一個類使得創建只需要1行代碼了

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
久久久久久久久中文字幕| av电影一区二区三区| 国产日韩一区二区在线观看| 97久久伊人激情网| 欧美激情精品久久久| 免费毛片网站在线观看| 久久精品久久久久| 日韩欧美亚洲日产国| 国产不卡精品视男人的天堂| 亚洲精品免费网站| 成人精品在线观看| 欧美激情网站在线观看| 国产专区一区二区| 国产精品乱子乱xxxx| 品久久久久久久久久96高清 | 国产成人小视频在线观看| 日本免费黄视频| 国产成+人+综合+亚洲欧美丁香花| 亚洲精品视频一二三| 97免费视频观看| 亚洲v日韩v综合v精品v| 7777精品伊久久久大香线蕉语言| 动漫一区二区在线| 91禁国产网站| 日韩av电影在线网| 国产黑人绿帽在线第一区| 日本手机在线视频| 精品国产一区二区三区久久久| 欧洲日本亚洲国产区| 久久精品人人爽| 欧美激情亚洲天堂| 国产精品盗摄久久久| 国产免费色视频| 最新国产精品久久| 久久久日本电影| 日韩视频在线免费播放| 国产成人三级视频| 国产在线播放91| 中文字幕中文字幕在线中心一区 | 久久这里只有精品99| 黄色一级片网址| 久久中文字幕视频| 国产精品揄拍一区二区| 午夜精品视频网站| 日韩中文字幕在线视频播放| 欧美一区二区在线视频观看| 国产精品久久av| av动漫免费看| 人人妻人人澡人人爽精品欧美一区| 久久精品视频亚洲| 不卡一卡2卡3卡4卡精品在| 欧美一级日本a级v片| 少妇久久久久久| 国产性生活免费视频| 亚洲精品免费在线视频| 久久精品国产亚洲精品| 国产区亚洲区欧美区| 亚洲国产精品一区在线观看不卡| 国产v综合ⅴ日韩v欧美大片| 蜜桃久久精品乱码一区二区| 亚洲色欲久久久综合网东京热| 日韩在线欧美在线| 国产欧美精品日韩| 日本a级片电影一区二区| 国产精品久久久久久久免费大片| 99中文字幕| 欧美在线观看视频| 一区二区三区一级片| 久久久久免费看黄a片app| 蜜桃av噜噜一区二区三区| 亚洲高清123| 国产精品久久久久9999| 成人免费视频91| 欧美精品久久| 午夜精品短视频| 国产精品成人播放| 国产福利一区二区三区在线观看| 国产一区福利视频| 日本高清久久一区二区三区| 欧美激情在线一区| 国产精品无码一本二本三本色| 91九色综合久久| 国产无套内射久久久国产| 日韩欧美一区二区三区四区 | 欧美二区三区| 亚洲精品人成| 久久伊人精品视频| 久久久久久久久久网| y111111国产精品久久婷婷| 极品校花啪啪激情久久| 日本高清+成人网在线观看| 在线播放豆国产99亚洲| 国产精品女视频| 国产suv精品一区二区三区88区| 国产玖玖精品视频| 狠狠色综合色区| 日韩久久久久久久| 性色av香蕉一区二区| 欧美日本精品在线| 久久久国产91| 久久99精品久久久久久三级| 国产精品一区二区久久精品| 欧美交换配乱吟粗大25p| 日韩xxxx视频| 午夜精品一区二区三区在线视| 欧美巨猛xxxx猛交黑人97人| 国产精品区一区二区三在线播放| 日韩视频在线免费| 久久久噜久噜久久综合| 国产精品1234| 69国产精品成人在线播放| 99久久综合狠狠综合久久止| 国产精品揄拍500视频| 国产精品自拍合集| 国产日韩欧美在线观看| 国产综合久久久久| 国产一区视频免费观看| 国产亚洲天堂网| 国产一区二区丝袜| 国产亚洲精品美女久久久m| 精品少妇一区二区三区在线| 国内精品视频在线| 国产中文字幕亚洲| 国产日产久久高清欧美一区| 国产亚洲精品美女久久久m| 国产一区二区高清不卡| 国产区亚洲区欧美区| 国产免费一区二区视频| 国产精品专区一| 国产一级特黄a大片99| 国产免费一区二区三区香蕉精| 国产日韩欧美自拍| www.中文字幕在线| 91精品免费看| 国产v亚洲v天堂无码久久久| 日韩在线视频观看| 日韩在线观看高清| 国产精品人人做人人爽| 操91在线视频| 亚洲砖区区免费| 视频一区视频二区视频三区视频四区国产| 天堂av一区二区| 日韩欧美亚洲日产国| 欧美国产视频在线观看| 欧美一二三视频| 国产深夜精品福利| 91久久精品一区| 久久久久免费看黄a片app| 国产精品久久中文| 色综合视频一区中文字幕| 亚洲国产精品久久久久婷婷老年| 懂色av粉嫩av蜜臀av| 欧美一区观看| 国产精品亚洲综合| 久久琪琪电影院| 国产精品青草久久久久福利99| 欧美激情中文字幕在线| 视频在线99re| 国内少妇毛片视频| 国产美女作爱全过程免费视频| 91精品国产99| 国产精品裸体瑜伽视频| 亚洲欧美日韩精品综合在线观看| 日韩欧美在线电影| 国产女主播av| 国产ts人妖一区二区三区| 国产精品高清在线| 亚洲a一级视频| 黄色一级大片在线观看| www日韩在线观看| 色999日韩欧美国产| 最新av在线免费观看| 秋霞在线一区二区| 99热在线这里只有精品| 久久久久久九九九| 在线视频不卡一区二区| 日韩精品一区二区三区四 | 99久热在线精品视频| 久久精品这里热有精品| 亚洲综合av影视| 激情五月宗合网| 久久久人人爽| 精品久久久久久中文字幕动漫| 日韩av免费在线看| 国产美女视频免费| 久久精品国产成人| 亚洲综合日韩中文字幕v在线| 青草视频在线观看视频| 97精品在线视频| 国产精品第1页| 欧美综合第一页| 77777亚洲午夜久久多人| 精品国偷自产一区二区三区| 日本不卡一区二区三区在线观看| 国产欧美日韩中文字幕| 久久久视频免费观看| 宅男一区二区三区| 精品一区二区三区视频日产| 久久久久久久免费| 午夜欧美性电影|