JAVA swing怎样让按钮和标签随着窗口的放大而放大,排版不变

如题所述

如果你想实现动态的按照要求的放大和缩小。那么你应该设置布局为frame.setLayout(null)
定义变量 width,height。然后在窗口改变大小重绘组件的时候,动态设置组件大小

比如 JButton.setBounds(0,0,width/10,height/10);

===================================================================

建议使用borderlayout 边界布局。非常好用。用边界布局套流布局,表布局就能做出很多界面了

简单的范例,你参考下

public class MyBorderLayout {

 public static void main(String[] args) {

  Frame f = new Frame("P03窗口");

  f.setLayout(new BorderLayout(30, 5));

  f.add(new Button("东"), BorderLayout.EAST);

  f.add(new Button("西"), BorderLayout.WEST);

  f.add(new Button("中"));

  f.add(new Button("南"), BorderLayout.SOUTH);

  f.add(new Button("北"), BorderLayout.NORTH);

  f.pack();

  f.setVisible(true);

 }

}

 

 

 

如果你想实现动态的按照要求的放大和缩小。那么你应该设置布局为frame.setLayout(null)
定义变量 width,height。然后在窗口改变大小重绘组件的时候,动态设置组件大小

比如 JButton.setBounds(0,0,width/10,height/10);

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-06-15
使用gridbaglayout布局。
在JPanel中使用该布局存放按钮和标签组件。
该布局有点繁琐。有不懂请留言。
这里给出gridbaglayout布局参数说明。你用的上。
gridx——组件的左边缘与网格左部之间的距离,默认值为 RELATIVE
gridy——组件的上边缘与网格顶部之间的距离,默认值为 RELATIVE
gridwidth——组件的横向宽度,默认值为1
gridheight——组件的纵向高度,默认值为1

ipadx——组件间的横向间距,组件的宽度就是这个组件的最小宽度加上ipadx值, 默认值为 0。
ipady——组件间的纵向间距,组件的高度就是这个组件的最小高度加上ipady值, 默认值为 0。
weightx——当窗口变大时,各组件沿水平方向跟着变大的比例,默认值为 0。
weighty——当窗口变大时,各组件沿垂直方向跟着变大的比例,默认值为 0。
fill——组件比显示区域小,可以用来控制组件的行为。控制组件是垂直填充,还是水平填充,或者两个方向一起填充,默认值为 NONE。

insets——指组件与显示区域四周边缘的空白区域的大小new Insets(上、左、下、右),默认值为 new Insets(0, 0, 0, 0)。
anchor——组件比显示区域小,告诉布局管理器组件在表格空间中的位置,默认值为
CENTER。

对gridwidth与gridheight做了修改后,必须记得要对fill属性做相应的修改,否则组件所显示的大小还是原来的大小。

gridx、gridy的可能值
RELATIVE 将被放置在前一个组件的右侧或下方
gridwidth、gridheight的可能值
RELATIVE 指定此组件为其行或列中的倒数第二个组件
REMAINDER 创建的组件会从创建的起点位置 开始一直延伸到容器所能允许的限度为止.
fill的可能值
NONE:不调整组件大小。
HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 BOTH:使组件完全填满其显示区域。本回答被网友采纳
第2个回答  2019-12-06
使用gridbaglayout布局。
在JPanel中使用该布局存放按钮和标签组件。
该布局有点繁琐。有不懂请留言。
这里给出gridbaglayout布局参数说明。你用的上。
gridx——组件的左边缘与网格左部之间的距离,默认值为 RELATIVE
gridy——组件的上边缘与网格顶部之间的距离,默认值为 RELATIVE
gridwidth——组件的横向宽度,默认值为1
gridheight——组件的纵向高度,默认值为1

ipadx——组件间的横向间距,组件的宽度就是这个组件的最小宽度加上ipadx值, 默认值为 0。
ipady——组件间的纵向间距,组件的高度就是这个组件的最小高度加上ipady值, 默认值为 0。
weightx——当窗口变大时,各组件沿水平方向跟着变大的比例,默认值为 0。
weighty——当窗口变大时,各组件沿垂直方向跟着变大的比例,默认值为 0。
fill——组件比显示区域小,可以用来控制组件的行为。控制组件是垂直填充,还是水平填充,或者两个方向一起填充,默认值为 NONE。

insets——指组件与显示区域四周边缘的空白区域的大小new Insets(上、左、下、右),默认值为 new Insets(0, 0, 0, 0)。
anchor——组件比显示区域小,告诉布局管理器组件在表格空间中的位置,默认值为
CENTER。

对gridwidth与gridheight做了修改后,必须记得要对fill属性做相应的修改,否则组件所显示的大小还是原来的大小。

gridx、gridy的可能值
RELATIVE 将被放置在前一个组件的右侧或下方
gridwidth、gridheight的可能值
RELATIVE 指定此组件为其行或列中的倒数第二个组件
REMAINDER 创建的组件会从创建的起点位置 开始一直延伸到容器所能允许的限度为止.
fill的可能值
NONE:不调整组件大小。
HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。 VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。 BOTH:使组件完全填满其显示区域。
第3个回答  2013-11-23
如果要求等比例缩放的话,可以试试监听窗口大小改变的事件,然后手动实现组件大小的调整
相似回答