Stuart ONE

          我有一頭小毛驢,我從來也不騎……

           

          Netbeans IDE 5.0 beta

          公司最近在開發一個JAVA Swing的c/s系統,用JAVA做c/s系統的比較少,在此記錄我的點滴收獲。
          (現在只是完成了UI的大體設計。事件沒寫,數據庫也沒有連。)

          一.Introducing netbeans 5.0 beta
          采用的IDE是SUN的Netbeans 5.0 beta。完全免費:)

          -matisse
          我想最重要的一個新特征應該是新加入的free design,這是一個完全可以自定義的layout,使用起來非常方便。但是,這個Layout也非常不穩定,經常會出錯,這點在下面會詳細說明。
          -Internationalization
          這個在以前的版本里也有,我認為這是一個非常方便的I18N工具。后面也會詳細說明。

          更多的特征可以查看netbeans的網站上關于5.0新特征的說明。


          二.Compare to the Eclipse platform, i think netbeans is easier for u to create a UI program
          跟Eclipse相比,我認為Netbeans更易于編寫UI程序,他的UI設計更方便。(不過我不喜歡Netbeans的界面,還是覺得Eclipse更清新)
          當然,在Eclipse里也有很多插件可以設計UI,但是很多好的插件是要錢的,公司可不能用:),比如我覺得Jigloo就不錯。

          三.步步精簡
          首先,在開發的最開始我們狂用Free Design,當時覺得真是方便阿,跟以前用4.1的時候用GridBagLayout慢慢調不可同日而語,開發速度大大提升。
          接 下來發現問題了,用Free Design生成的代碼非常多,而且很亂,更要命的是有的時候在編輯UI的時候,拖拽控件會發生錯誤,很是煩人。(其實我覺得有的時候雖然會發生錯誤,但 是只要耐心的多調整一下,也是可以實現的)。另外一個問題是,是用Free Design需要單獨另外引入一個jar包,沒有包含在jdk5.0里。于是領導同志發話了,為了避免各方面麻煩,我們不用Free Design了,還是改成用GridBagLayout。(我想sun在以后的版本里可得好好調整一下這個Free Desing了,這可是一個非常方便的layout阿,以后如果能做到象vb一樣那么方便,那可是有革命性滴,hehe)
          我其實特別沒耐心,非常 不愿意用GridBagLayout,但是沒辦法阿,于是乖乖地用了。不過慢慢的發現GridBagLayout也非常方便,而且 當你運行后,拖拽窗口不會影響里面控件的位置。另外生成的代碼很整齊,也精簡了不少。不錯!(他的缺點就是可設置的參數太多了,如果不用IDE要一次次的 自己運行程序來看效果慢慢調)
          接下來問題又來了,我們程序的主窗口左邊是一個Jtree,通過點擊右邊顯示相應的內容。所以我們要將做好的 Dialog放到一個主窗口的右 邊的Panel里,而且里面的控件(比如說表格)要隨著主窗口的拖放變化大小,可是在gridbaglayout里我們都把大小釘死了。領導同志又想出好 主意了:簡化layout,盡量用簡單的layout,比如borderlayout, flowlayout等,然后將一個Panel分為好幾個Panel,將主panel設為borderlayout或者其他,依情況而定。這些 layout雖然可調控性不強,但是代碼很簡單;另外便于以后調整。例如我們的一堆button本來是在頁面下方的,想要調整到上方去,那么如果是以前的 gridbaglayout,那么要調好久。現在,只用簡單的設置borderlayout就可以了,可以將下方的panel位置設為north,然后把 上方的panel設為south就可以了,這樣其實根本不用IDE,直接改代碼就可以。
          進行這次調整后,當托放主窗口時,表格的大小也隨之改變了。就我看來,borderlayout好像只有中間位置,即center位置的panel才能隨 著窗口拖放變化,所以我們把表格都是放在center位置的Panel里的,不知道是不是這樣設計的。

          從開發過程的三次調整中,我發現,其實用Java Swing編程,真正牛的還是直接用代碼來編!精簡的才是最好滴。

          四. Problems we met and our solution:
          1.我們要做中文和英文兩個版本,how?
          這 里我們就用到了前面提到的internationalization,首先在某個package里新建一個properties文件(在others那 個里面)。在這個properties文件里可以添加各種locale,我們在這里只添加zh_CN,另外的一個自動建立的 default.language。建立完成后,先在某個Dialog的編輯狀態下,點擊上面的tools-> internationalization->internationalize,在彈出的對話框里選擇剛才建立的properties文件,系統 會自動搜索你的文本區域,并且命名好這個key,你在下面填入key值就可以了。這是填入的key值是default language的,接下來可以右鍵點擊建立好的properties文件,選擇open,這時可以看到你所建立的幾種locale都列出來了,直接在這 里翻譯吧,系統會自動將中文轉成UTF-8碼。這樣做完后,啟動程序時會根據不同的locale顯示不同的文字,哈哈:)爽~
          幾點補充說明:
          1) 選擇tools->internationalization->internationalize自動搜索文本區域時,會經常找不到所 有的文本區域,可以關掉重新再找。往往這樣還是不行,這時候就要手動改了,自己去看看生成的代碼吧。還可以直接選擇properties欄里text后面 的按鈕,在下拉框選擇resourcebundle,然后也可以填寫。選擇還是很多滴。
          2)例如JTable里的文字,你可以選擇 properties里的model后面的按鈕,選擇From Connection,選擇user code自己寫代碼。“java.util.ResourceBundle.getBundle("YourPropertiesFileName"). getString("KeyNameInPropertiesFile"))”
          2.日期選擇
          某些Dialog里面要選擇日期,所以需要做一個日期選擇框dateSelector。開源的好處體現出來了,從sourceforge上面找了一個叫JCalendar的項目,直接用上,呵呵。(不過要注意說明copyright哦!)
          3.Jtable的Title雙行顯示(不是用html實現)
          Jtable 的確不太好調整,自己寫代碼編仿彿又很麻煩。比如我就碰到了表格內容很多,這個時候就需要將有些Title雙行顯示,才能顯得美觀。雖然 jdk5.0支持html,但是領導建議不要用,那就不用把,在Java CodeGuru上找到了個類MultiLineHeaderRenderer,放在工具包里,直接調用就可以了,呵呵(同樣注意標明出處)。另外,在 JavaGuru上還有跨行Title的類,不過我們沒有用。(http: //www.codeguru.com/java/articles/126.shtml,另外還有RowHeader的類http: //www.codeguru.com/java/articles/127.shtml)

          其實還有很多碰到的難點,通過上網查資料和自己摸索,都解決了,有問題就google吧:)

          五.Some skills of netbeans
          netbeans的技巧有很多,我就不在這多說了,說幾個我覺得比較有用的:
          Ctrl+Shift+F 自動引入需要的包
          Ctrl+Space or Ctrl+\ 出提示輸入
          Ctrl+Shift+Space show javadoc dialog
          進行重命名時,用Refector, 會自動修改所有相關的地方

          六. Concluding
          算起來從接觸netbeans到現在UI的設計基本完成,還不到一個月的時間,還有很多不足之處,大家多多指教。

          posted on 2005-11-08 13:09 Stuart 閱讀(1111) 評論(1)  編輯  收藏 所屬分類: Java

          評論

          # re: Netbeans IDE 5.0 beta 2005-11-08 13:41 swimring

          謝謝分享經驗  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          BlogRoll

          Tech websites

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 山东省| 玉山县| 二连浩特市| 台安县| 阜宁县| 怀远县| 东港市| 徐闻县| 隆子县| 涟水县| 衡山县| 开平市| 阿合奇县| 辽阳市| 抚顺市| 涟水县| 合肥市| 明光市| 木兰县| 唐山市| 墨玉县| 乐都县| 延川县| 仙桃市| 延寿县| 尼木县| 麻城市| 临城县| 清镇市| 会昌县| 洛川县| 安庆市| 大足县| 盖州市| 惠来县| 左贡县| 安达市| 舒城县| 京山县| 马关县| 大姚县|