一、通过继承JFrame来显示一个窗口
一般步骤如下:
1.定义组件(需要那些组件,提前在main函数之前就定义)
2.创建组件(在构造中,首先创建,进行初始化)
3.添加组件到最顶层的组件JFrame
4.设置布局管理器(不设置时默认是BorderLayout ,如果需要设置在此)
5.设置默认窗体属性
先来看一个栗子:
import javax.swing.JButton; import javax.swing.JFrame; /** * 演示第一个JFrame * @author Red * */ public class Test1 extends JFrame { JFrame jf = null; JButton jb1 = null; public static void main(String[] args) { // TODO Auto-generated method stub Test1 test = new Test1(); } //构造函数 public Test1(){ jf = new JFrame(); //创建button按钮 jb1 = new JButton("我是按钮!"); //添加button 组件 this.add(jb1); //设置窗口标题 this.setTitle("This is a Demo!"); //设置大小 this.setSize(200, 200); //初始位置 this.setLocation(500, 100); //默认关闭窗口时退出 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示 this.setVisible(true); } }
二、边界布局管理器(BorderLayout )
* 演示BoderLayout 的操作 * 1.定义组件 * 2.创建组件 * 3.设置窗体属性 * */ public class BorderTest extends JFrame { //定义组件 JButton jb1, jb2,jb3,jb4,jb5 ; public static void main(String[] args) { // TODO Auto-generated method stub BorderTest bt = new BorderTest(); } //构造 public BorderTest(){ //创建组件 jb1 = new JButton("东"); jb2 = new JButton("南"); jb3 = new JButton("西"); jb4 = new JButton("北"); jb5 = new JButton("中"); //将以上的jb加到JFrame\ this.add(jb1,BorderLayout.EAST); this.add(jb2, BorderLayout.SOUTH); this.add(jb3, BorderLayout.WEST); this.add(jb4, BorderLayout.NORTH); this.add(jb5, BorderLayout.CENTER); //设置窗体属性 this.setTitle("BorderLayout Test"); this.setSize(220, 200); this.setLocation(500, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }
三、流式布局管理器(FlowLayout )
* 流式布局管理器案例 * */ public class FlowTest extends JFrame { //定义组件 JButton jb1,jb2,jb3,jb4,jb5; public static void main(String[] args) { // TODO Auto-generated method stub FlowTest ft = new FlowTest(); } public FlowTest(){ //创建组件 jb1 = new JButton("关羽"); jb2 = new JButton("张飞"); jb3 = new JButton("赵云"); jb4 = new JButton("马超"); jb5 = new JButton("黄忠"); //将组件添加到JFrame this.add(jb1); this.add(jb2); this.add(jb3); this.add(jb4); this.add(jb5); //设置布局管理器 this.setLayout(new FlowLayout(FlowLayout.LEFT)); //设置窗体类型 this.setTitle("FlowLayout Test"); this.setSize(220, 200); this.setLocation(500, 100); //对用户禁止改变窗口大小 this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } 值得注意的是:如果不想让用户在拖拽窗体的时候改变大小,可以增加
//对用户禁止改变窗口大小 this.setResizable(false);
四、网格布局管理器(GridLayout) 演示网格布局管理器 * */ public class GridTest extends JFrame { //定义组件 int size =9 ; JButton [] jb = new JButton[size]; public static void main(String[] args) { // TODO Auto-generated method stub GridTest gt = new GridTest(); } //构造 public GridTest(){ //创建组件 for(int i=0;i<size;i++){ jb[i] = new JButton(String.valueOf(i+1)); } //设置布局管理器 this.setLayout(new GridLayout(3,3,10,5)); //将jb组件添加到JFrame for(int i=0;i<size;i++){ this.add(jb[i]); } //设置窗体属性 this.setTitle("GridLayout Test"); this.setSize(220, 200); this.setLocation(500, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }