云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

           

          最近做的一個程序是用Swing的,要求能夠根據不同的分辨率自動調整界面上所有組件的大小。也就是說不是寫死是1024×768,并且字體也需要根據大小自動變化。
          我使用的工具是Netbeans,為實現動態變化,我使用了GridBagLayout。首先,新建一個類,繼承JPanel。然后設置JPanel的Layout為GridBagLayout。當然,根據情況,可以和Html中的表格一樣,Panel里面嵌套Panel,要點是每個Panel的Layout都設置為GridBagLayout(使用其他的Layout也可以實現這樣的功能,但是個人感覺GridBagLayout最容易控制和使用)。
          Layout的設置只是第一步,缺省情況下,GridBagLayout會把Panel中所有的組件排成一行,從左到右逐個排放。這時候,就要使用Customize Layout(定制布局)的功能,點擊后,會再彈出一個窗口
          在新的窗口中,可以拖動Panel里面的組件,象表格一樣,組織安放所有的組件,相當方便。
          這些步驟完成后,重要的兩個屬性是,填充(Fill),建議把所有組件的Fill屬性,都選成Both,也就是水平和垂直方向都延伸填充。這樣,Panel里面的所有組件會平鋪開來,占滿Panel的所有空間。那么,如何調整這些組件的大小呢?需要使用weightx和weighty這兩個屬性。這兩屬性的值使用0.0~1.0之間的小數,數越大,組件所占據的空間越大。
          通過以上的設置,就可以實現組件大小隨著Panel大小的變化而變化了。
          那么,又如何實現字體的變化呢?這個只能通過編程實現了。但是initComponents函數里的代碼都是自動生成的,如何添加自定義的代碼呢。點擊屬性面板里的字體屬性后面的小方框,在彈出的對話框里,點擊高級按鈕,勾選“生成初始化后的代碼”,然后在文本框里,輸入代碼,這段自定義代碼,會在每次自動生成代碼的時候,添加到initComponents函數中。




          評論

          # re: Java Swing界面如何動態調整大小(自適應)  回復  更多評論   

          2007-07-28 10:24 by Sun
          排版是門藝術
          想做好不容易

          # re: Java Swing界面如何動態調整大小(自適應)  回復  更多評論   

          2007-07-29 18:07 by usherlight
          我一開始費了好長時間,真是辛苦啊。

          # re: Java Swing界面如何動態調整大小(自適應)  回復  更多評論   

          2008-08-11 09:19 by 漫步金星
          不怎么熟悉GridBagLayout。
          我試試,看行不行

          # re: Java Swing界面如何動態調整大小(自適應)  回復  更多評論   

          2014-07-11 20:43 by xiao杉
          1、JFrame 空布局
          2、JPanel setBounds
          3、JPanel setSize()//動態改變大小
          主站蜘蛛池模板: 拉孜县| 东方市| 铁岭市| 渝北区| 安化县| 凤山市| 简阳市| 大埔区| 大冶市| 新竹县| 郎溪县| 华容县| 昭通市| 迭部县| 平谷区| 保定市| 宿松县| 汕尾市| 田林县| 安阳县| 惠来县| 喀喇沁旗| 德化县| 环江| 桂东县| 当涂县| 中宁县| 株洲县| 黑龙江省| 大宁县| 炉霍县| 晋州市| 旺苍县| 抚松县| 中方县| 凉山| 洞头县| 禹州市| 荣昌县| 湟中县| 托克逊县|