云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
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()//动态改变大小

只有注册用户登录后才能发表评论。


网站导航: