<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java桌面技術(shù)

    Java Desktop Technology

    常用鏈接

    統(tǒng)計(jì)

    友情連接

    最新評(píng)論

    swing專業(yè)外觀

    前3篇文章使用SWT組件實(shí)現(xiàn)了專業(yè)外觀窗口,現(xiàn)在給出一個(gè)swing實(shí)現(xiàn)版本。運(yùn)行的效果如下:
                            
    用Swing實(shí)現(xiàn)不足的地方在于頂層窗口,截至到JDK1.6發(fā)布,AWT尚未支持不規(guī)則矩形窗體和窗口半透明。有好消息稱,JDK1.7中將實(shí)現(xiàn)。本程序需要在JDK1.6下編譯,因?yàn)橛昧艘恍┬略龅腁PI,如果要改成1.6以前版本實(shí)現(xiàn)也不難。但是在JRE1.6下運(yùn)行,性能會(huì)明顯提高。
                     
    源代碼這里下載。

    posted on 2007-11-07 16:17 sun_java_studio@yahoo.com.cn(電玩) 閱讀(12339) 評(píng)論(23)  編輯  收藏 所屬分類: NetBeansGUI Design

    評(píng)論

    # re: swing專業(yè)外觀 2007-11-07 19:10 BeanSoft

    Well done, good work man! SWT and Swing all is GUI.  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-07 19:28 William Chen

    不錯(cuò)。
    看到你說(shuō)的九宮格原理,很有啟發(fā),我想能不能做一款可視化定制組件外觀的工具。也就是可視化的定制Swing皮膚的工具。首先自定義一套靈活的皮膚,這種皮膚可以根據(jù)xml配置文件來(lái)改變外觀。做一個(gè)可視化設(shè)計(jì)工具,來(lái)定制外觀,產(chǎn)生xml配置結(jié)果,當(dāng)然也可以寫(xiě)一個(gè)轉(zhuǎn)換工具,基于那個(gè)靈活的皮膚,將xml配置生成一套皮膚外觀。
    我記得jre 5、6已經(jīng)有一個(gè)所謂synthlookandfeel可以根據(jù)xml配置改變外觀,但好像只能改變顏色,圖片等簡(jiǎn)單的外觀,不能使用Java2D的一些操作比如GradientPaint、畫(huà)線、填充等進(jìn)行擴(kuò)充。
    使用上面那個(gè)工具應(yīng)該可以很容易的實(shí)現(xiàn)這種界面,你所作的就是對(duì)JButton、JLabel等標(biāo)準(zhǔn)組件,每一個(gè)定制一個(gè)外觀。比如一個(gè)JButton,基本的JButton外觀包括按下去、抬起來(lái)、rollover、獲得焦點(diǎn)等幾種情況的外觀,每種外觀又可以根據(jù)九宮格原理定制按鈕邊框,使用圖片也好,使用簡(jiǎn)單Java2D元語(yǔ)言也好,總之讓普通開(kāi)發(fā)者,能使用這個(gè)工具可視化的定制一套皮膚出來(lái)。他所作的工作無(wú)非是做一些圖標(biāo),選擇幾種有限的規(guī)則,熟悉幾種常用的Java2D操作(使用界面選擇就行了,不需要他編程)。然后生成xml配置文件,或者直接生成各種組件ComponentUI類。
    呵呵,這樣那些網(wǎng)頁(yè)上、Office上、IM的界面不就很容易畫(huà)出來(lái)嗎?普通Swing開(kāi)發(fā)人員也可以利用普通Swing組件做恨花哨界面。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-07 19:54 土豬

    圖片是很好看,
    只是下載了代碼,編譯不了,
    我以前是用jdk1.5的,下載了jdk6.0安裝之后,仍然ant不了。
    也不知道為什么。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-07 23:49 sun_java_studio@yahoo.com.cn(電玩)

    @William Chen
    synthlookandfeel我也知道,但是沒(méi)研究過(guò)。對(duì)于大多數(shù)UI來(lái)說(shuō)漂亮、平庸之間只隔一層窗戶紙,就是知道不知道九宮格這種手段。九宮格技術(shù)實(shí)現(xiàn)很簡(jiǎn)單,關(guān)鍵還要看美工的創(chuàng)意。

    說(shuō)起九宮格,我最開(kāi)始稱呼它“切圖”。是一位前人畫(huà)了一幅設(shè)計(jì)圖,4角4邊外加中心的內(nèi)容,使我豁然開(kāi)朗從此界面設(shè)計(jì)上升了一個(gè)高度,后來(lái)被派到BEA專職UI開(kāi)發(fā)與美工交互時(shí)提到了這種思想,才知道有個(gè)學(xué)名叫“九宮格”。看來(lái)“九宮格”作為裝飾手段早已有之。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 00:03 sun_java_studio@yahoo.com.cn(電玩)

    @William Chen
    剛接觸UI的時(shí)候容易被忽悠,尤其是對(duì)null布局管理的批評(píng),聲稱這種布局只適合組件尺寸不改變的情況,于是乎覺(jué)得必須靈活運(yùn)用布局管理器才是解決布局問(wèn)題的唯一方法,GridBagLayout一直沒(méi)掌握過(guò),SpringLayout、BoxLayout又疲于應(yīng)對(duì),后來(lái)干脆舍棄布局管理器,因?yàn)槲野l(fā)現(xiàn)為組件添加re-size事件同樣能達(dá)到目的,而且相當(dāng)靈活。但是舍棄布局管理器付出的代價(jià)是布局完全自己控制,編碼量還是滿大的。后來(lái)學(xué)習(xí)SWT時(shí)發(fā)現(xiàn)其中一個(gè)叫FormLayout的布局管理器十分靈活(百分比+偏移量),能解決一切靜態(tài)布局問(wèn)題,再后來(lái)通過(guò)研讀JDK相關(guān)源碼,了解了其布局管理器原理,底層還是調(diào)用setBounds而已,沒(méi)什么之外希奇古怪的調(diào)用,于是自己重新實(shí)現(xiàn)了FormLayout,使得awt、swing也可以有強(qiáng)大的FormLayout支持了。過(guò)不多久我將FormLayout拿出來(lái)與大家分享,敬請(qǐng)期待。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 00:06 sun_java_studio@yahoo.com.cn(電玩)

    @土豬
    “下載了jdk6.0安裝之后,仍然ant不了”。不知道JDK1.6是否向IDE注冊(cè)了。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 00:11 sun_java_studio@yahoo.com.cn(電玩)

    @William Chen
    陳前輩少安毋躁,待我將有關(guān)布局管理器 和 xml配置組件的帖子發(fā)表后咱們?cè)龠M(jìn)一步討論。如何。我對(duì)您提到的工具很感興趣。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 08:48 zht

    挺漂亮的,不過(guò)感覺(jué)只是對(duì)效果的實(shí)現(xiàn)而已,而且最好是在drag的時(shí)候改變大小  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 09:02 sun_java_studio@yahoo.com.cn(電玩)

    @zht
    在drag的時(shí)候改變大小,可以啊,稍微修改代碼即可,不過(guò)這樣對(duì)性能有影響,這點(diǎn)對(duì)任何窗口系統(tǒng)都一樣。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 09:14 zht

    對(duì)性能影響應(yīng)該不大吧  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 16:19 ivin

    樓主你好,William Chen和你的文章基本都拜讀過(guò)了。非常的棒,非常佩服你們的技術(shù)。我有一個(gè)小小的要求,希望你能夠在以后發(fā)布的源代碼編碼方式能不能改成utf-8,可能很多人和我一樣,下載了源代碼不一定是在中文系統(tǒng)下運(yùn)行的。gbk2312的編碼會(huì)出現(xiàn)亂碼。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 18:58 sun_java_studio@yahoo.com.cn(電玩)

    @zht
    如果拖拽過(guò)程中伴隨這尺寸改變,尺寸改變會(huì)導(dǎo)致contentPane重畫(huà),一般情況下窗口都會(huì)閃爍。Windows窗口這種行為是可配的。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-08 19:05 sun_java_studio@yahoo.com.cn(電玩)

    @ivin
    “拜讀”我不敢當(dāng),本人資歷與技術(shù)和William Chen不是一層次的。對(duì)于桌面設(shè)計(jì),漂亮是一方面,但是更重要的是做到UI與業(yè)務(wù)分離,畢竟客戶更關(guān)注的業(yè)務(wù)。編碼改成utf-8沒(méi)問(wèn)題。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-11-09 15:38 William Chen

    電玩,
    你每次講話總是太謙虛、太客氣了,再這樣說(shuō)弄得我挺心虛的,都不敢再來(lái)露面了。其實(shí)我也只不過(guò)多學(xué)過(guò)兩年Java,一名熟練工人,一名賣(mài)油翁而已。以后別用這樣的詞,我實(shí)在承受不起。你懂很多我不懂的,我懂很多你不懂的,每個(gè)人都是自己領(lǐng)域的行家,大家互相學(xué)習(xí),互相討論。知識(shí)多了讓人充實(shí),朋友多了讓人開(kāi)心。希望大家在一起就是能互相學(xué)習(xí)知識(shí),多認(rèn)識(shí)朋友,分享獲取知識(shí)的快樂(lè)。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-12-20 19:33 游客

    今天在網(wǎng)上搜索swing lookandfeel的時(shí)候,無(wú)意中發(fā)現(xiàn)了博主和william Chen倆人的博客,看了幾篇文章,大為受益,以后要多多向兩位學(xué)習(xí)。  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2007-12-27 09:51 日月雨林

    好像有平臺(tái)的限制啊,它說(shuō)需要另一個(gè)TM_Client的平臺(tái)  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2008-10-22 16:11 游客

    但是在樓主的界面上加上JTextField不可用????????怎么回事呢?????  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2008-10-23 10:17 sun_java_studio@yahoo.com.cn(電玩)

    是有這個(gè)問(wèn)題,是JWindow的問(wèn)題,我有時(shí)間再看看,如果窗口繼承JFrame就好了.
    這個(gè)只是個(gè)demo.  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2008-11-09 14:12 sun_java_studio@yahoo.com.cn(電玩)

    @游客
    現(xiàn)在這個(gè)問(wèn)題解決了,問(wèn)題依然是JWindow,改成繼承JFrame就可以了,但是要加上setUndecorated(true);使之去掉裝飾。代碼已經(jīng)改寫(xiě)了,并加上了你說(shuō)的JTextField  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2009-06-08 19:39 atgihdgv

    netbeans 垃圾東西,總是報(bào)錯(cuò),什么NullPointer 什么的,一大堆  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2009-06-08 19:40 atgihdgv@yahooo.com.cn

    netbeans 垃圾東西,總是報(bào)錯(cuò),什么NullPointer 什么的,一大堆:
    java.lang.NullPointerException
    at org.netbeans.modules.coverage.config.Config.getProjectType(Config.java:163)
    at org.netbeans.modules.coverage.config.Config.isNbModuleProject(Config.java:188)
    at org.netbeans.modules.coverage.config.Config.isSupportedProject(Config.java:192)
    at org.netbeans.modules.coverage.ProjectMenuAction$ProjectContextAwareMenuAction$ProjectMenuItems.<init>(ProjectMenuAction.java:146)
    at org.netbeans.modules.coverage.ProjectMenuAction$ProjectContextAwareMenuAction.getPopupPresenter(ProjectMenuAction.java:126)
    at org.openide.util.Utilities.actionsToPopup(Utilities.java:2730)
    at org.openide.util.Utilities.actionsToPopup(Utilities.java:2810)
    at org.openide.explorer.view.TreeView.createPopup(TreeView.java:971)
    at org.openide.explorer.view.TreeView$PopupAdapter.showPopup(TreeView.java:1450)
    at org.openide.awt.MouseUtils$PopupMouseAdapter.maybePopup(MouseUtils.java:182)
    at org.openide.awt.MouseUtils$PopupMouseAdapter.mouseReleased(MouseUtils.java:177)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6216)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5981)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4583)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4413)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4413)
    [catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)



    每次都這樣,都不想用它了。有沒(méi)有人能幫哈我啊,先謝謝了!  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀 2011-11-25 17:12 lxw出山小草

    @atgihdgv@yahooo.com.cn
    你的一些插件壞了,可能是病毒導(dǎo)致的,重裝一下就行  回復(fù)  更多評(píng)論   

    # re: swing專業(yè)外觀[未登錄](méi) 2014-05-21 14:11 tang

    @atgihdgv@yahooo.com.cn
    自己齪怪別人工具  回復(fù)  更多評(píng)論   

    TWaver中文社區(qū)
    主站蜘蛛池模板: 中文字幕日韩亚洲| 精品国产免费一区二区三区香蕉| 久久精品国产免费观看| 亚洲国产精品无码久久久蜜芽| 一级毛片人与动免费观看| 免费在线精品视频| 免费国产va在线观看| 亚洲精品国产va在线观看蜜芽| 三年片在线观看免费观看大全中国| 免费一看一级毛片全播放| 日本高清免费中文在线看| 伊人婷婷综合缴情亚洲五月| 最近2019中文免费字幕在线观看| 亚洲国产a∨无码中文777| 亚洲视频在线观看免费| 亚洲成a人不卡在线观看| 无码日韩精品一区二区免费| 亚洲国产午夜精品理论片在线播放| 免费无码又爽又刺激毛片| 免费看内射乌克兰女| 伊人久久大香线蕉亚洲五月天 | 亚洲国产精品张柏芝在线观看| 免费在线视频你懂的| 亚洲久热无码av中文字幕| 亚洲国产综合无码一区二区二三区 | 中文字幕av免费专区| 亚洲精品成人av在线| AV免费网址在线观看| 免费精品国自产拍在线播放| 亚洲第一AAAAA片| 成人免费看片又大又黄| 一级毛片**免费看试看20分钟| 亚洲人成网7777777国产| 日本片免费观看一区二区| 亚洲av乱码中文一区二区三区| 亚洲综合伊人久久综合| 亚色九九九全国免费视频| 污污的视频在线免费观看| 麻豆亚洲AV永久无码精品久久| 成人免费看吃奶视频网站| 国产黄色免费观看|