国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 使用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行代碼了

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费
<button id="0mgmq"><pre id="0mgmq"></pre></button>
  • <tr id="0mgmq"></tr>
  • <abbr id="0mgmq"><source id="0mgmq"></source></abbr> <button id="0mgmq"></button>
  • 蜜乳av另类精品一区二区| 亚洲午夜激情| 色姑娘综合网| 亚洲二区精品| 久久久久久久久久久一区 | 久久裸体视频| 精品欧美日韩| 欧美日韩在线大尺度| 国产精品久久久亚洲一区| 国产不卡一区二区三区在线观看| 欧美一区二区综合| 狠狠色噜噜狠狠狠狠色吗综合| 香蕉久久a毛片| 欧美激情第一页在线观看| 欧美涩涩视频| 91pron在线| 亚洲一区三区| 91久久偷偷做嫩草影院| 水蜜桃亚洲一二三四在线| 99国产一区| 欧美日韩在线精品一区二区三区| 亚洲性图久久| 国产自产在线视频一区| 欧美日韩日本网| 国产精品自拍首页| 亚洲婷婷免费| 鲁丝一区鲁丝二区鲁丝三区| 国产精品v一区二区三区 | 国产精品一区视频网站| 欧美日韩爆操| 久久99久久99精品蜜柚传媒| 亚洲午夜电影| 蜜桃导航-精品导航| 亚洲经典自拍| 亚洲国产精品久久久久久女王| 久久本道综合色狠狠五月| 日本一区二区在线| 久久精品动漫| 亚洲五月婷婷| 亚洲午夜精品久久| 国产精品嫩草在线观看| 亚洲第一黄网| 亚洲日本一区二区三区在线不卡| 久久精品系列| 亚洲免费观看| 欧美精品97| 欧美精品一区二区三区四区五区 | 欧美日韩一区二区三区免费| 国产精品一 二 三| 国产亚洲永久域名| 欧美精品一区在线发布| 欧洲成人一区二区| 国产欧美在线一区二区| 翔田千里一区二区| 日韩视频久久| 永久久久久久| 亚洲精品影院| 日产精品久久久一区二区| 国产精品美女诱惑| 噜噜噜久久亚洲精品国产品小说| 欧美日韩精品一区| 中文字幕一区二区三区有限公司| 久久综合精品一区| 国产精品乱码一区二区三区| 亚洲永久网站| 亚洲综合首页| 久久国产精品亚洲va麻豆| 亚洲黄色高清| 亚洲福利电影| 精品91视频| 欧美日韩综合精品| 欧美日韩综合网| 欧美视频二区| 国产精品二区在线观看| 欧美一区二视频在线免费观看| 午夜老司机精品| 亚洲一区二区三区免费看| 日韩精品一区二区三区丰满| 精品国产乱码久久久久久郑州公司| 2014亚洲精品| 国产高清一区视频| 精品视频一区二区三区四区| 成人情视频高清免费观看电影| 91入口在线观看| 成人在线观看av| 精品欧美一区二区三区久久久 | 精品麻豆av| 日本高清不卡三区| 翔田千里亚洲一二三区| 亚洲欧洲日夜超级视频| 中文字幕一区综合| 欧美激情成人在线| 99热这里只有精品8| 欧美亚洲免费高清在线观看| 噜噜噜躁狠狠躁狠狠精品视频| av成人免费观看| 久久天堂国产精品| 亚洲图片欧洲图片日韩av| 欧美精品自拍| 国产农村妇女精品一二区| 午夜在线播放视频欧美| 国产精品区一区| 天天综合色天天综合色hd| 亚洲欧美综合| 欧美专区在线| 久久影视中文粉嫩av| 欧美在线播放一区| 中文在线不卡| 国产一区二区不卡视频在线观看| 欧美黑人xxxxx| 亚洲午夜视频| 国产91免费视频| 中文字幕一区二区三区有限公司| 亚洲成色最大综合在线| 国产精品手机视频| 亚洲欧洲精品一区二区三区波多野1战4| 国产一区久久| 成人在线免费网站| 中文视频一区视频二区视频三区| 国产亚洲欧美另类一区二区三区| 99精品国产高清一区二区| 日本高清一区| 国产精品美女| 日韩精品久久久| 亚洲一区精彩视频| 亚洲国产精品一区二区第一页 | 日本一区二区久久精品| 99在线热播精品免费99热| 精品一区二区三区视频日产| 国产一区二区三区四区三区四| 99久久国产免费免费| 欧美日本在线| 久久99精品久久久久久青青日本 | 黄色日韩在线| 久久精品日产第一区二区三区乱码| 欧美日韩免费观看一区=区三区| caoporen国产精品| 狠狠爱www人成狠狠爱综合网| 国产色综合一区二区三区| 欧美体内she精视频在线观看| 岛国一区二区三区高清视频| 亚洲网站在线| 日本亚洲导航| 波多野结衣一区二区三区在线观看| 在线免费一区| 九九九热999| 免费在线成人av| 亚洲人成网站在线观看播放| 粉嫩av一区二区三区免费观看| 狠狠爱综合网| 亚洲一区二区三区涩| 国产综合欧美在线看| 亚洲一区日韩在线| 黄色亚洲免费| 中日韩在线视频| 欧洲精品一区色| 不卡视频一区| 免费视频一区二区三区在线观看| 欧美日一区二区在线观看 | 亚洲高清激情| 亚洲一区二区三区免费看| 狠狠色噜噜狠狠狠狠色吗综合| 麻豆av福利av久久av| 亚洲国产影院| 欧美日韩免费| 欧美女激情福利| 五月天亚洲综合情| 欧美日韩最好看的视频| 成人91视频| 久久亚洲精选| 久久精品九九| 亚洲一区二区三区涩| 亚洲精品一区二区三区蜜桃久| 欧美日韩无遮挡| 欧美久久99| 欧美日韩高清在线一区| 日韩一区二区电影在线观看| 免费精品视频一区二区三区| 国产综合 伊人色| 国产高清精品一区二区| 99久久自偷自偷国产精品不卡| 欧美一级久久| 麻豆久久精品| 超碰97人人人人人蜜桃| 久久精品91| 国产91aaa| 精品国产免费久久久久久尖叫| 国内精品**久久毛片app| 国产精品精品软件视频| 精品国产91亚洲一区二区三区www| 国产日韩一区二区三区| 久久精品国产一区二区三区不卡| 久久国产精品-国产精品| 久久久久资源| 天堂一区二区三区| 欧美精品aa| av成人激情| 99高清视频有精品视频| 久久久久se| 热re99久久精品国产99热|