您的位置:首页 > 编程语言 > Java开发

java布局 BoxLayout布局

2016-03-18 14:41 921 查看
BoxLayout

BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。X_AXIS 表示水平排列,而 Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayout 是采用水平还是垂直排列。下面是一个创建 BoxLayout 实例的例子:

JPanel panel=new JPanel();
BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(layoout);

在这个例子中,一个 BoxLayout 布局管理器的实例 layout 被创建,这个实例被设置为 panel 的布局管理器,该布局管理器采用了水平排列来排列控件。

当 BoxLayout 进行布局时,它将所有控件依次按照控件的优先尺寸按照顺序的进行水平或者垂直放置,假如布局的整个水平或者垂直空间的尺寸不能放下所有控件,那么 BoxLayout 会试图调整各个控件的大小来填充整个布局的水平或者垂直空间。

案例5:请使用BoxLayout布局管理器完成如下图所示的窗口设计



public class BoxLayoutDemo extends JFrame {

public BoxLayoutDemo() {

setLayout(new GridLayout(4, 1));

// 沿X轴放置

JPanel pane1 = new JPanel();

pane1.setLayout(new BoxLayout(pane1, BoxLayout.X_AXIS));

pane1.add(new JButton("btn11"));

pane1.add(new JButton("btn12"));

pane1.add(new JButton("btn13"));

pane1.add(new JButton("btn14"));

add(pane1);

// 沿y轴放置

JPanel pane2 = new JPanel();

pane2.setLayout(new BoxLayout(pane2, BoxLayout.Y_AXIS));

pane2.add(new JButton("btn21"));

pane2.add(new JButton("btn22"));

pane2.add(new JButton("btn23"));

pane2.add(new JButton("btn24"));

add(pane2);

// 与容器的ComponentOrientation相同的放置

JPanel pane3 = new JPanel();

pane3.setLayout(new BoxLayout(pane3, BoxLayout.LINE_AXIS));

pane3.add(new JButton("btn31"));

pane3.add(new JButton("btn32"));

pane3.add(new JButton("btn33"));

pane3.add(new JButton("btn34"));

add(pane3);

// 与容器的ComponentOrientation相反的放置

JPanel pane4 = new JPanel();

pane4.setLayout(new BoxLayout(pane4, BoxLayout.PAGE_AXIS));

pane4.add(new JButton("btn41"));

pane4.add(new JButton("btn42"));

pane4.add(new JButton("btn43"));

pane4.add(new JButton("btn44"));

add(pane4);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setLocationRelativeTo(this);

this.pack();

this.setVisible(true);

}

public static void main(String[] args) {

BoxLayoutDemo b = new BoxLayoutDemo();

}

}

BoxLayout 往往和 Box 这个容器结合在一起使用,这么做的理由是,BoxLayout 是把控件以水平或者垂直的方向一个接一个的放置,如果要调整这些控件之间的空间,就会需要使用 Box 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: