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 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。
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 容器提供的透明的组件作为填充来填充控件之间的空间,从而达到调整控件之间的间隔空间的目的。
相关文章推荐
- java布局 BorLayout布局
- Java——JDOM解析XML文件
- Rxjava学习
- java printf与println的区别
- java布局FlowLayout
- Java数据库连接池的配置
- RxJava 组合操作符
- 我的JAVA学习笔记
- MyEclipse的字体设置
- Java连接Mysql数据库的基本操作
- JAVA学习路线
- java布局管理
- java 设计模式---单例模式
- Maven+Spring 4+Spring MVC(一)
- eclipse最有用快捷键整理
- java fork-join框架应用和分析
- MyEclipse下使用maven创建web项目
- Genymotion模拟器的安装以使用
- java复杂布局
- Java解决UTF-8的BOM问题