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

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > 使用Annotation以1行代碼完成一個(gè)TableViewer

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


好的下面展示一下用這個(gè)工具編寫(xiě)一個(gè)TableViewer的

清單1 DTO 在get方法上做的注解最終將被用作創(chuàng)建TableViewer
Java代碼 復(fù)制代碼
  1. package solonote.common.swt.test;   
  2.   
  3. import java.util.Date;   
  4.   
  5. import solonote.common.swt.table.ColumnAnnotation;   
  6.   
  7. /**  
  8.  * 測(cè)試用的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 = "數(shù)字", 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 執(zhí)行程序
Java代碼 復(fù)制代碼
  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.         //一行代碼創(chuàng)建TableViewer   
  29.         TableViewer tableViewer =TableRender.renderTable(table, TestDTO.class);   
  30.         //定義表格結(jié)束   
  31.            
  32.         //定義數(shù)據(jù)   
  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. }  


好的,運(yùn)用的設(shè)計(jì)模式什么都直接看doc和源代碼吧 注釋很全的,

自己認(rèn)為這個(gè)工具還是可以幫助你的,需要更強(qiáng)大的功能請(qǐng)自己擴(kuò)展,

這個(gè)小工具在此GPL3下開(kāi)源 http://www.gnu.org/licenses/gpl-3.0.txt

看懂源代碼您還需要以下知識(shí):

Swt Jface 關(guān)于Table和TableViewer的知識(shí)

Annotation的知識(shí)

關(guān)于java反射機(jī)制的知識(shí)

設(shè)計(jì)模式:工廠方法、策略模式、適配器模式

轉(zhuǎn)載請(qǐng)附帶此bolg文章的鏈接,感謝

20071218 10:44 增加了對(duì)每一列的位置控制,將注解由原來(lái)的字段上移到了get方法上,增加了一個(gè)類(lèi)使得創(chuàng)建只需要1行代碼了

安徽新華電腦學(xué)校專(zhuān)業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線(xiàn)咨詢(xún)
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
国产精华一区| 久久久亚洲天堂| 国产极品美女高潮无套久久久| 国产精品色午夜在线观看| 中文字幕第一页亚洲| 国内精品一区二区三区| 国产不卡在线观看| 日本一区二区视频| 久久久免费精品视频| 亚洲不卡中文字幕| 97精品国产97久久久久久粉红 | 精品伦理一区二区三区| 欧美国产一二三区| 国产精品视频一| 黄色网页免费在线观看| 国产精品日韩一区二区免费视频 | 欧美中文字幕精品| 久久久国产视频91| 欧美人与性禽动交精品| 久久久99免费视频| 欧美二区在线| 国产精品日韩欧美一区二区| 奇米成人av国产一区二区三区 | 国产免费内射又粗又爽密桃视频| 国产精品久久电影观看| 国语精品免费视频| 国产精品日韩一区二区| 国内自拍欧美激情| 国产精品第三页| 国产欧美 在线欧美| 欧美激情综合色| 成人a免费视频| 午夜欧美不卡精品aaaaa| 久久视频免费在线| 日韩精品最新在线观看| 久久久国产精品一区| 国产视频精品网| 亚洲国产精品久久久久爰色欲| 99久热re在线精品996热视频| 亚洲va久久久噜噜噜| 国产成人精品国内自产拍免费看| 日本亚洲导航| 深夜福利一区二区| 欧美国产视频在线观看| 九色精品免费永久在线| 91久久精品一区二区别| 青青草综合在线| 国产精品久久久久久av福利| 国产精品自拍合集| 日本不卡一区二区三区四区| 久久精视频免费在线久久完整在线看| 韩国成人一区| 在线播放豆国产99亚洲| 国产精品久久久久7777婷婷| 国产午夜福利视频在线观看| 亚洲在线播放电影| 国产高清不卡无码视频| 欧美在线亚洲一区| 精品国产免费久久久久久尖叫 | 久久久久久久久中文字幕| 欧美婷婷久久| 中文字幕无码精品亚洲35| 久久久久亚洲精品国产| 国产美女直播视频一区| 日韩欧美视频第二区| 九九九热精品免费视频观看网站| 久久久久狠狠高潮亚洲精品| 欧美亚洲成人精品| 中文字幕精品—区二区日日骚| 国产高清精品一区| 国产色婷婷国产综合在线理论片a| 亚洲熟妇无码一区二区三区导航 | 伊人久久av导航| 日韩一区av在线| av网站在线观看不卡| 日韩精品资源| 亚洲一区二区三区四区视频| 国产精品手机在线| 91久久精品国产91性色| 欧美主播一区二区三区美女 久久精品人 | 国产一区二区网| 日本新janpanese乱熟| 蜜月aⅴ免费一区二区三区| 久久精品ww人人做人人爽| 国产日韩一区二区三区| 日本一区二区黄色| 亚洲一卡二卡三卡| 国产精品免费网站| 国产成人精品免高潮费视频 | 国产女人水真多18毛片18精品| 日韩免费毛片视频| 亚洲欧洲一二三| 国产精品久久久久久久久粉嫩av| 国产成人亚洲精品无码h在线| 高清视频欧美一级| 国产一区香蕉久久| 欧美激情 国产精品| 日韩精品在线视频免费观看| 亚洲欧美日韩精品在线| 欧美日韩国产123| 国产精品久久久久久久久久新婚| 日韩在线视频免费观看| 国产激情在线看| 国产精品一区二| 国产亚洲精品网站| 免费精品视频一区| 欧美亚洲另类视频| 日韩精品第一页| 日韩人妻精品一区二区三区 | 日本欧美国产在线| 亚洲一区二区在线观| 中文字幕免费高| 国产99久久久欧美黑人| 国产精品高潮呻吟视频| 国产精品男人爽免费视频1| 久久久久久久少妇| 久久综合精品一区| 91久久在线视频| 99视频免费播放| 91九色国产社区在线观看| av在线不卡一区| 97久久伊人激情网| 91精品国产91久久久久久| 91九色视频在线| 久久久免费在线观看| 国产激情久久久| 久久精品国产一区二区三区日韩| 久久久999视频| 久久96国产精品久久99软件| 国产成人亚洲精品| 精品国产一区二区三区久久| 国产成人精品免费视频| 久久精品日韩| 久久精品2019中文字幕| 久久久精品在线观看| 国产精品久久久久久久久久久久| 久久这里有精品| 中文字幕色一区二区| 亚洲精品天堂成人片av在线播放| 视频一区二区在线观看| 青青视频免费在线| 免费看污久久久| 国产精品一区二区a| 911国产网站尤物在线观看| 久久久亚洲精选| 国产成人免费高清视频| 久久精品久久精品亚洲人| 国产精品高潮呻吟久久av黑人| 久久久久成人精品| 天天干天天操天天干天天操| 热99精品里视频精品| 免费观看国产成人| 91久久久久久久久久久久久| 色噜噜国产精品视频一区二区 | 99精品一级欧美片免费播放| 久久综合亚洲精品| 久久精品国产一区二区三区| 欧美日韩国产91| 日本一区精品| 免费在线观看日韩视频| 高清欧美性猛交| 国产a级一级片| 精品免费二区三区三区高中清不卡| 一区二区免费电影| 欧洲亚洲在线视频| 国产精品一区二| 日韩视频免费中文字幕| 米奇精品一区二区三区在线观看| 日韩av电影在线免费播放| 韩国一区二区av| 国产精华一区| 欧美精品在线网站| 日韩人妻无码精品久久久不卡| 国产色综合天天综合网| 99久久无色码| 国产成人无码一二三区视频| 亚洲在线第一页| 欧美激情第一页在线观看| 91久久精品日日躁夜夜躁国产| 精品国偷自产在线| 丁香色欲久久久久久综合网| 欧美极品视频一区二区三区| 97精品国产97久久久久久粉红| 国产精品人人做人人爽| 亚洲一区二区精品在线观看| 极品尤物一区二区三区| 久久久无码中文字幕久...| 久久夜色精品国产欧美乱| 日本在线视频www| 国产在线一区二区三区播放| 久久av综合网| 亚洲区成人777777精品| 国产亚洲第一区| 日韩天堂在线视频| 午夜精品一区二区三区四区| 国产欧美日韩精品专区| 久久精品美女视频网站| 日本三级中文字幕在线观看| 91国内精品久久| 精品国产乱码久久久久久丨区2区|