JAVA中setLayout有什么用_java – 为什么需要使用BoxLayout调用setLayout?

大多数布局管理器都有无参数构造函数(也就是说,您可以使用新的FlowLayout()创建FlowLayout,使用新的GridLayout()创建GridLayout,使用新的GridBagLayout()创建GridBagLayout等).但是,BoxLayout要求您传递它将要管理的容器以及应该布置组件的轴.

我的问题是:既然你已经告诉布局管理器要布局哪个组件,你为什么要写

BoxLayout bl = new BoxLayout(myPanel, BoxLayout.Y_AXIS);

myPanel.setLayout(bl);

而不只是第一行?

我快速查看了the BoxLayout source code并看到我使用的构造函数(第178-185行)没有调用target.setLayout(this)或任何类型的东西.看起来添加它真的很简单.有没有理由为什么它不包含在Swing库中?

如果重要,我正在使用

java version 1.7.0

Java(TM) SE Runtime Environment (build 1.7.0-b147)

在Win7Pro上.

谢谢!

SSCCE:

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JButton;

public class BoxLayoutSSCCE extends JFrame {

// Change this to see what I mean

public static final boolean CALL_SET_LAYOUT = true;

public BoxLayoutSSCCE () {

super("Box Layout SSCCE");

JPanel panel = new JPanel();

BoxLayout bl = new BoxLayout(panel, BoxLayout.Y_AXIS);

if (CALL_SET_LAYOUT) {

panel.setLayout(bl);

}

panel.add(new JButton("Button 1"));

panel.add(new JButton("Button 2"));

}

public static void main (String[] args) {

BoxLayoutSSCCE blsscce = new BoxLayoutSSCCE();

blsscce.pack();

blsscce.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值