隨筆 - 119  文章 - 3173  trackbacks - 0
          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          交友莫獨酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526731
          • 排名 - 92

          最新評論

          ????? 在實際項目中,大家都要都有很多需要通過日期進行管理的數據,比如單據,考勤,日志等等。。。??? 這些數據對象都有一個共同的特點就是有一個字段是日期型。
          ???? 于是我就利用JAVA的反射機制,寫了一個通用年月日樹。
          是用在RCP插件項目中的。稍加改造也能用到WEB項目中,核心算法不變。

          ??1?import?java.lang.reflect.Field;
          ??2?import?java.util.Calendar;
          ??3?import?java.util.Date;
          ??4?import?java.util.List;
          ??5?import?org.eclipse.swt.SWT;
          ??6?import?org.eclipse.swt.graphics.Image;
          ??7?import?org.eclipse.swt.widgets.Tree;
          ??8?import?org.eclipse.swt.widgets.TreeItem;
          ??9?
          ?10?public?class?GetYMDTree?{
          ?11?
          ?12?????private?static?Image?nodeImg?=?Activator.getImageDescriptor("icons/node.png").createImage();
          ?13?
          ?14?????private?static?Image?yearImg?=?Activator.getImageDescriptor("icons/year.png").createImage();
          ?15?
          ?16?????private?static?Image?monthImg?=?Activator.getImageDescriptor("icons/month.png").createImage();
          ?17?
          ?18?????private?static?Image?dayImg?=?Activator.getImageDescriptor("icons/day.png").createImage();
          ?19?
          ?20?????
          ?21?
          ?22?????public?static?void?buildTree(List?list,?TreeItem?tree,?String?dateField,?String?nameField)?{
          ?23?????????tree.removeAll();
          ?24?????????if?(list?!=?null?&&?list.size()?>?0)?{
          ?25?????????????String?year?=?"";
          ?26?????????????String?month?=?"";
          ?27?????????????String?day?=?"";
          ?28?????????????Object?objt?=?list.get(0);
          ?29?????????????Field?dateF?=?null;
          ?30?????????????Field?nameF?=?null;
          ?31?????????????try?{
          ?32?????????????????dateF?=?objt.getClass().getDeclaredField(dateField);
          ?33?????????????????dateF.setAccessible(true);
          ?34?????????????????nameF?=?objt.getClass().getDeclaredField(nameField);
          ?35?????????????????nameF.setAccessible(true);
          ?36?????????????}?catch?(SecurityException?e)?{
          ?37?????????????????e.printStackTrace();
          ?38?????????????????tree.removeAll();
          ?39?????????????????return;
          ?40?????????????}?catch?(NoSuchFieldException?e)?{
          ?41?????????????????e.printStackTrace();
          ?42?????????????????tree.removeAll();
          ?43?????????????????return;
          ?44?????????????}
          ?45?????????????for?(Object?obj?:?list)?{
          ?46?????????????????Calendar?calendar?=?Calendar.getInstance();
          ?47?????????????????String?name?=?null;
          ?48?????????????????try?{
          ?49?????????????????????calendar.setTime((Date)?dateF.get(obj));
          ?50?????????????????????name?=?(String)?nameF.get(obj);
          ?51?????????????????}?catch?(IllegalArgumentException?e)?{
          ?52?????????????????????e.printStackTrace();
          ?53?????????????????????tree.removeAll();
          ?54?????????????????????return;
          ?55?????????????????}?catch?(IllegalAccessException?e)?{
          ?56?????????????????????e.printStackTrace();
          ?57?????????????????????tree.removeAll();
          ?58?????????????????????return;
          ?59?????????????????}
          ?60?????????????????if?(year.equals(Integer.toString(calendar.get(Calendar.YEAR))))?{
          ?61?????????????????????if?(month.equals(Integer.toString(calendar.get(Calendar.MONTH)?+?1)))?{
          ?62?????????????????????????if?(day.equals(Integer.toString(calendar.get(Calendar.DATE))))?{
          ?63?????????????????????????????TreeItem?et?=?new?TreeItem(tree.getItem(tree.getItemCount()?-?1).getItem(
          ?64?????????????????????????????????????tree.getItem(tree.getItemCount()?-?1).getItemCount()?-?1)
          ?65?????????????????????????????????????.getItem(
          ?66?????????????????????????????????????????????tree.getItem(tree.getItemCount()?-?1).getItem(
          ?67?????????????????????????????????????????????????????tree.getItem(tree.getItemCount()?-?1).getItemCount()?-?1)
          ?68?????????????????????????????????????????????????????.getItemCount()?-?1),?SWT.NONE);
          ?69?????????????????????????????et.setText(name);
          ?70?????????????????????????????et.setData(obj);
          ?71?????????????????????????????et.setImage(nodeImg);
          ?72?????????????????????????}?else?{
          ?73?????????????????????????????day?=?Integer.toString(calendar.get(Calendar.DATE));
          ?74?????????????????????????????TreeItem?dt?=?new?TreeItem(tree.getItem(tree.getItemCount()?-?1).getItem(
          ?75?????????????????????????????????????tree.getItem(tree.getItemCount()?-?1).getItemCount()?-?1),?SWT.NONE);
          ?76?????????????????????????????dt.setText(day);
          ?77?????????????????????????????dt.setImage(dayImg);
          ?78?????????????????????????????dt.setData(day);
          ?79?????????????????????????????TreeItem?et?=?new?TreeItem(dt,?SWT.NONE);
          ?80?????????????????????????????et.setText(name);
          ?81?????????????????????????????et.setData(obj);
          ?82?????????????????????????????et.setImage(nodeImg);
          ?83?????????????????????????}
          ?84?????????????????????}?else?{
          ?85?????????????????????????month?=?Integer.toString(calendar.get(Calendar.MONTH)?+?1);
          ?86?????????????????????????day?=?Integer.toString(calendar.get(Calendar.DATE));
          ?87?????????????????????????TreeItem?mt?=?new?TreeItem(tree.getItem(tree.getItemCount()?-?1),?SWT.NONE);
          ?88?????????????????????????mt.setText(month);
          ?89?????????????????????????mt.setImage(monthImg);
          ?90?????????????????????????mt.setData(month);
          ?91?????????????????????????mt.setExpanded(true);
          ?92?????????????????????????TreeItem?dt?=?new?TreeItem(mt,?SWT.NONE);
          ?93?????????????????????????dt.setText(day);
          ?94?????????????????????????dt.setImage(dayImg);
          ?95?????????????????????????dt.setData(day);
          ?96?????????????????????????TreeItem?et?=?new?TreeItem(dt,?SWT.NONE);
          ?97?????????????????????????et.setText(name);
          ?98?????????????????????????et.setData(obj);
          ?99?????????????????????????et.setImage(nodeImg);
          100?????????????????????}
          101?????????????????}?else?{
          102?????????????????????year?=?Integer.toString(calendar.get(Calendar.YEAR));
          103?????????????????????month?=?Integer.toString(calendar.get(Calendar.MONTH)?+?1);
          104?????????????????????day?=?Integer.toString(calendar.get(Calendar.DATE));
          105?????????????????????TreeItem?yt?=?new?TreeItem(tree,?SWT.NONE);
          106?????????????????????yt.setText(year);
          107?????????????????????yt.setImage(yearImg);
          108?????????????????????yt.setData(year);
          109?????????????????????TreeItem?mt?=?new?TreeItem(yt,?SWT.NONE);
          110?????????????????????mt.setText(month);
          111?????????????????????mt.setImage(monthImg);
          112?????????????????????mt.setData(month);
          113?????????????????????mt.setExpanded(true);
          114?????????????????????TreeItem?dt?=?new?TreeItem(mt,?SWT.NONE);
          115?????????????????????dt.setText(day);
          116?????????????????????dt.setImage(dayImg);
          117?????????????????????dt.setData(day);
          118?????????????????????TreeItem?et?=?new?TreeItem(dt,?SWT.NONE);
          119?????????????????????et.setText(name);
          120?????????????????????et.setData(obj);
          121?????????????????????et.setImage(nodeImg);
          122?????????????????????yt.setExpanded(true);
          123?????????????????}
          124?????????????}
          125?????????}
          126?????}
          127?
          128?
          129?
          130?????public?static?Image?getDayImg()?{
          131?????????return?dayImg;
          132?????}
          133?
          134?
          135?
          136?????public?static?void?setDayImg(Image?dayImg)?{
          137?????????GetYMDTree.dayImg?=?dayImg;
          138?????}
          139?
          140?
          141?
          142?????public?static?Image?getMonthImg()?{
          143?????????return?monthImg;
          144?????}
          145?
          146?
          147?
          148?????public?static?void?setMonthImg(Image?monthImg)?{
          149?????????GetYMDTree.monthImg?=?monthImg;
          150?????}
          151?
          152?
          153?
          154?????public?static?Image?getNodeImg()?{
          155?????????return?nodeImg;
          156?????}
          157?
          158?
          159?
          160?????public?static?void?setNodeImg(Image?nodeImg)?{
          161?????????GetYMDTree.nodeImg?=?nodeImg;
          162?????}
          163?
          164?
          165?
          166?????public?static?Image?getYearImg()?{
          167?????????return?yearImg;
          168?????}
          169?
          170?
          171?
          172?????public?static?void?setYearImg(Image?yearImg)?{
          173?????????GetYMDTree.yearImg?=?yearImg;
          174?????}
          175?}
          176?
          posted on 2007-01-09 10:04 交口稱贊 閱讀(2336) 評論(2)  編輯  收藏 所屬分類: Eclipse RCP SWT

          FeedBack:
          # re: 反射妙用:超強通用年月日樹 2007-01-09 13:09 JAVA虛擬機
          頂  回復  更多評論
            
          # re: 反射妙用:超強通用年月日樹 2007-01-10 01:45 zhuangxulin
          研究一下  回復  更多評論
            
          主站蜘蛛池模板: 南漳县| 华容县| 哈尔滨市| 宁强县| 抚远县| 栾城县| 苏尼特左旗| 平塘县| 马公市| 团风县| 华阴市| 白山市| 峨边| 沁阳市| 视频| 建昌县| 商水县| 和政县| 沙雅县| 民勤县| 伊川县| 两当县| 全椒县| 利津县| 岱山县| 芜湖县| 甘泉县| 广灵县| 武山县| 若尔盖县| 衡阳市| 万全县| 德保县| 塘沽区| 恩平市| 乐东| 大丰市| 潮州市| 武冈市| 泗水县| 湛江市|