云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          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()//動態改變大小
          主站蜘蛛池模板: 芦溪县| 庆云县| 台中县| 尚义县| 德昌县| 绩溪县| 清远市| 大安市| 遂溪县| 建水县| 皮山县| 玉屏| 满洲里市| 瑞金市| 赣州市| 平阴县| 凤台县| 唐河县| 平度市| 娱乐| 安顺市| 华池县| 蕉岭县| 泰州市| 黑龙江省| 安塞县| 巨野县| 晋城| 贵港市| 绥棱县| 福贡县| 衡水市| 确山县| 施秉县| 阳泉市| 岢岚县| 永定县| 西平县| 凤凰县| 洞口县| 东方市|