java为什么需要用BoxLayout调用setLayout?
大多数布局管理器没有参数构造函数(也就是说,您可以创建带有new FlowLayout ()
的FlowLayout、带有new GridLayout ()
的GridLayout、带有new GridBagLayout ()
的GridBagLayout等)。但是,BoxLayout
要求传递它将要管理的容器和组件应该沿其布置的轴
我的问题是:既然您已经告诉布局管理器要布局哪个组件,为什么需要编写
BoxLayout bl = new BoxLayout(myPanel, BoxLayout.Y_AXIS);
myPanel.setLayout(bl);
而不仅仅是第一行
我快速查看了一下the ^{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);
}
}
共 (0) 个答案