BorderLayout
BorderLayout 将容器分为 EAST 、 SOUTH 、 WEST 、 NORTH 、 CENTER五个区域,普通组件可以被放置在这 5 个区域的任意一个中 。 BorderLayout布局 管理器的布局示意图如图所示 。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCLKh1ve-1611989830263)(./images/BorderLayout.png)]](https://i-blog.csdnimg.cn/blog_migrate/c9b77d2f96b13297a8263c8f29df9f75.png)
当改变使用 BorderLayout 的容器大小时, NORTH 、 SOUTH 和 CENTER区域水平调整,而 EAST 、 WEST 和 CENTER 区域垂直调整。使用BorderLayout 有如下两个注意点:
- 当向使用 BorderLayout 布局管理器的容器中添加组件时 , 需要指定要添加到哪个区域中 。 如果没有指定添加到哪个区域中,则默认添加到中间区域中;
- 如果向同一个区域中添加多个组件时 , 后放入的组件会覆盖先放入的组件;
| 构造方法 | 方法功能 |
|---|---|
| BorderLayout() | 使用默认的水平间距、垂直 间距创建 BorderLayout 布局管理器 。 |
| BorderLayout(int hgap,int vgap): | 使用指定的水平间距、垂直间距创建 BorderLayout 布局管理器。 |
代码演示1:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66I7UAia-1611989830265)(./images/BorderLayout.jpg)]](https://i-blog.csdnimg.cn/blog_migrate/ef10c56270c339e3410559cc8f820b41.png)
import java.awt.*;
public class BorderLayoutDemo1 {
public static void main(String[] args) {
//1.创建Frame对象
Frame frame = new Frame("这里测试BorderLayout");
//2.指定Frame对象的布局管理器为BorderLayout
frame.setLayout(new BorderLayout(30,5));
//3.往Frame指定东南西北中各添加一个按钮组件
frame.add(new Button("东侧按钮"), BorderLayout.EAST);
frame.add(new Button("西侧按钮"), BorderLayout.WEST);
frame.add(new Button("南侧按钮"), BorderLayout.SOUTH);
frame.add(new Button("北侧按钮"), BorderLayout.NORTH);
frame.add(new Button("中间按钮"), BorderLayout.CENTER);
//4.设置Frame为最佳大小
frame.pack();
//5.设置Frame可见
frame.setVisible(true);
}
}
如果不往某个区域中放入组件,那么该区域不会空白出来,而是会被其他区域占用

package domee.GUI;
import java.awt.*;
public class BorderLayoutDemo2 {
public static void main(String[] args) {
Frame frame = new Frame("BorderLayout布局测试");
//给frame设置BorderLayout管理器
frame.setLayout(new BorderLayout(30,30));
//向frame的指定区域添加组件
frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
//frame.add(new Button("西侧按钮"),BorderLayout.WEST);
//frame.add(new Button("东侧按钮"),BorderLayout.EAST);
frame.add(new Button("中间按钮"),BorderLayout.CENTER);
frame.add(new TextField("测试文本框"));
/**
* 向同一个区域内添加多个组件时,只会显示最后一个,其他的多个组件被覆盖
* 当四周区域内组件无内容时会被其他区域(中间)内容覆盖
*/
// Panel panel = new Panel();
// panel.add(new Button("中间按钮"),BorderLayout.CENTER);
// panel.add(new TextField("测试文本框"));
// frame.add(panel);
frame.setBounds(200,200,600,300);
//frame.pack();
frame.setVisible(true);
}
}
向同一个区域内添加多个组件时,只会显示最后一个,其他的多个组件被覆盖当四周区域内组件无内容时会被其他区域(中间)内容覆盖
代码演示2:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uar4oVxi-1611989830268)(./images/BorderLayoutDemo2.jpg)]](https://i-blog.csdnimg.cn/blog_migrate/b83a734dc86d3d7ddeec609ba2c28e96.png)
import java.awt.*;
public class BorderLayoutDemo2 {
public static void main(String[] args) {
//1.创建Frame对象
Frame frame = new Frame("这里测试BorderLayout");
//2.指定Frame对象的布局管理器为BorderLayout
frame.setLayout(new BorderLayout(30,5));
//3.往Frame指定南,北,放入一个按钮,往中间区域放入一个Panel
frame.add(new Button("南侧按钮"), BorderLayout.SOUTH);
frame.add(new Button("北侧按钮"), BorderLayout.NORTH);
Panel panel = new Panel();
panel.add(new TextField("测试文本"));
panel.add(new Button("中间按钮"));
frame.add(panel, BorderLayout.CENTER);
//4.设置Frame为最佳大小
frame.pack();
//5.设置Frame可见
frame.setVisible(true);
}
}
本文详细介绍了Java Swing中的BorderLayout布局管理器,包括其将容器划分为EAST、SOUTH、WEST、NORTH、CENTER五个区域的特性,以及在调整窗口大小时各区域的行为。同时,通过代码示例展示了如何添加组件到不同区域,并说明了向同一区域添加多个组件时的覆盖规则。此外,还讨论了未填充区域如何被其他区域占用的情况。
2665

被折叠的 条评论
为什么被折叠?



