Java布局管理中实现设置组建的大小

GGZAMM 2010-09-28 11:49:48
Java的布局管理器中,关于组建的大小一直是个难以解决的问题,虽然网格包布局管理可以设定组建的小,但是过于繁琐,我试过BoxLayout布局管理,设置了bt2.setMinimumSize(new Dimension(100,150));,但是好像并不起作用,各位高手解说解说
...全文
389 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-05-19
  • 打赏
  • 举报
回复
BoxLayout

height = max(components[i].height) // 水平

width = max(components[i].width) // 垂直
彡颵爺 2011-05-19
  • 打赏
  • 举报
回复
bt2.setMinimumSize(new Dimension(100,150)); //这一行注释掉以后,效果是一样的

设置最小值是成功了的,但在运行时,一开始系统会默认显示,就是显示原来的大小,但你在用鼠标改变窗口大小时效果就看出来了,
你把这段代码
 Box Box1 = Box.createVerticalBox();
JButton bt1 = new JButton("按钮一");
Box1.add(bt1);
JButton bt2 = new JButton("按钮二");
bt2.setMinimumSize(new Dimension(100,150)); //这一行注释掉以后,效果是一样的
Box1.add(bt2);
baseBox.add(Box1);

改为
Box Box1 = Box.createVerticalBox();
JButton bt1 = new JButton("按钮一");
Box1.add(bt1);
Box1.add(Box.createVerticalStrut(50));//为了明显看出bt2的大小在改变,在前后加上空白区
JButton bt2 = new JButton("按钮二");
bt2.setMinimumSize(new Dimension(20,20)); //这一行注释掉以后,效果是一样的?
Box1.add(bt2);
Box1.add(Box.createVerticalStrut(50));//为了明显看出bt2的大小在改变,在前后加上空白区
baseBox.add(Box1);

运行了以后,你再用鼠标拉动窗口大小时,你会发现bt2在慢慢变小,而其它的没变,当它变到设定的值时(20,20)就再不变小了,为了更明显你还可以将这个值改为(10,10)或(0,0)就能区分了
jfeng613l 2011-05-18
  • 打赏
  • 举报
回复
setPreferenceSize
setMaximumSize
这俩一起..貌似就好用了~~~~~~~~~
GGZAMM 2010-09-29
  • 打赏
  • 举报
回复
应该是
最小: setMinimumSize
当前: setPreferenceSize
最大: setMaximumSize
但是不管用的的啊,在BoxLayout里面,请看下面代码
import java.awt.*;
import javax.swing.*;
public class boxbuju
{
public boxbuju()
{
JFrame frm = new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frm.getContentPane();

Box baseBox = Box.createHorizontalBox();
contentPane.add(baseBox);

Box Box1 = Box.createVerticalBox();
JButton bt1 = new JButton("按钮一");
Box1.add(bt1);
JButton bt2 = new JButton("按钮二");
bt2.setMinimumSize(new Dimension(100,150)); //这一行注释掉以后,效果是一样的
Box1.add(bt2);
baseBox.add(Box1);

Box Box2 = Box.createVerticalBox();
baseBox.add(Box2);
JButton bt3 = new JButton("按钮三");
bt3.setAlignmentX(Component.CENTER_ALIGNMENT);
bt3.setMaximumSize(new Dimension(300,50)); //但是这句话市起作用的
Box2.add(bt3);

Box Box3 = Box.createHorizontalBox();
Box2.add(Box3);

Box Box4 = Box.createVerticalBox();
Box4.add(Box.createVerticalStrut(50));
Box4.add(new JButton("按钮四"));
Box4.add(Box.createVerticalStrut(50));
Box3.add(Box4);

Box Box5 = Box.createVerticalBox();
Box5.add(Box.createVerticalGlue());
Box5.add(new JButton("按钮五"));
Box3.add(Box5);

frm.setTitle("BoxLayout");
frm.setSize(600, 400);
frm.pack();
frm.setVisible(true);
}
public static void main(String args[])
{
boxbuju b = new boxbuju();
}
}
着实令人费解!!!!
monkeyking1987 2010-09-29
  • 打赏
  • 举报
回复
BoxLayout就比较特殊喽.你说的情况我也遇到过,还有另一种解决方式(可用但不太好的哈)
使用空字符串或Box里面的组件来占位.
比如两个Button,一个为 设置,另一个为 设为默认,这样弄:
JButton b1=new JButton("设为默认");
JButton b2=new JButton(" 设置 ");
用一种非常规办法来解决,
要不用使用netbeans等SWING的可视化开发工具喽.那样更好
monkeyking1987 2010-09-28
  • 打赏
  • 举报
回复
每个组件可设置最小,最大与当前显示的值.具体为:
最小: setMinimumSize
当前: setPreferenceSize
最大: setMaxSize
一般要改变的是当前显示喽.
并且这东西和不同的布局管理器还有关系

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧