边界布局管理器(BorderLayout)
将容器简单分为东南西北中5个区域,中区域最大。
package test;
import java.awt.*;
import javax.swing.*;
import javax.swing.*;
public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
MyClass myclass = new MyClass();
}
public MyClass(){
//创建组件
jb1 = new JButton("中");
jb2 = new JButton("东");
jb3 = new JButton("西");
jb4 = new JButton("南");
jb5 = new JButton("北");
//添加组件
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.EAST);
this.add(jb3,BorderLayout.WEST);
this.add(jb4,BorderLayout.SOUTH);
this.add(jb5,BorderLayout.NORTH);
this.setTitle("边界布局演示");
this.setSize(300,200);
this.setLocation(200, 100);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
注意事项:
- 不是5个部分都必须添加
- 中部组件会自动的调节大小
- JFrame窗体、JDialog对话框组件默认布局方法
流式布局 FlowLayout
按照组件的添加次序将组件从左到右放置在容器中,当到达容器的边界时,组件将放置在下一行中,FlowLayout可以左对齐、居中对齐、或者右对齐的方式排列组合,但是次序不会因此而改变。
package test;
import java.awt.*;
import javax.swing.*;
import javax.swing.*;
public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
MyClass myclass = new MyClass();
}
public MyClass(){
//创建组件
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
//设置布局管理器
this.setLayout(new FlowLayout());//默认居中
// this.setLayout(new FlowLayout(FlowLayout.LEFT));//左对齐
// this.setLayout(new FlowLayout(FlowLayout.RIGHT));//右对齐
this.setTitle("流式布局演示");
this.setSize(300,200);
this.setLocation(200, 100);
this.setResizable(false);//禁止改变窗口的大小
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
注意
- 不限制他所管理的组件大小,允许他们有最佳大小
- 当容器缩放时,组件的位置可能变化,但组件的大小不变。
- 默认组件是居中对齐,可以指定对齐方式。
网格布局 GridLayout
将容器分成多行多列,组件被从左到右填充到每个网格中。
package test;
import java.awt.*;
import javax.swing.*;
import javax.swing.*;
public class MyClass extends JFrame{
//定义组件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
MyClass myclass = new MyClass();
}
public MyClass(){
//创建组件
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
//设置布局管理器
this.setLayout(new GridLayout(2,3));
this.setTitle("网格布局演示");
this.setSize(300,200);
this.setLocation(200, 100);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
注意:
- 组件的相对位置不会随容器的缩放而变化,但大小会变化
- 所有组件的大小相同
- 可以指定网格的行、列、水平间隙、垂直间隙
开发GUI程序步骤
- 引入包
- 继承JFrame类
- 定义组件
- 创建组件(构造函数)
- 添加组件
- 对窗体设置