一、JFrame的简单运用:
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_1 extends JFrame{
//定义按钮组件
JButton jb1=null;
public static void main(String[] args) {
Demo1_1 dm=new Demo1_1();
}
//构造函数
public Demo1_1()
{
//初始化按钮组件
jb1=new JButton("按钮1");
//添加组件
this.add(jb1);
//设置窗口标题
this.setTitle("Hello world");
//设置窗口大小,窗口大小的单位是像素
this.setSize(200, 200);
//设置窗口位置,窗口位置定义的是窗口最左上角的点的坐标
this.setLocation(100, 100);
//设置当关闭窗口时保证JVM也退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗口
this.setVisible(true);
}
}
二、布局管理器--介绍
1、概念:组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理。
2、种类:java共提供了五种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网格包布局管理器(GridBagLayout)。其中前三种是最常见的布局管理器。
介绍:
(一)、边界布局管理器(BorderLayout):将容器简单的划分为东南西北中五个区域,
中间区域最大,JFrame默认此布局。
案例代码:
/*
* BorderLayout演示
* 1、继承JFrame
* 2、定义你需要的组件
* 3、创建组件(构造函数里初始化创建)
* 4、添加组件(引用边界布局管理器来添加组件的过程中布局)
* 5、对窗体的设置
* 6、显示窗体
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_2 extends JFrame{
//定义五个组件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_2 dm=new Demo1_2();
}
//构造函数 public Demo1_2() { //创建组件 jb1=new JButton("中部"); jb2=new JButton("北部"); jb3=new JButton("东部"); jb4=new JButton("南部"); jb5=new JButton("西部"); //添加组件 this.add(jb1, BorderLayout.CENTER); this.add(jb2, BorderLayout.NORTH); this.add(jb3, BorderLayout.EAST); this.add(jb4, BorderLayout.SOUTH); this.add(jb5, BorderLayout.WEST); //设置窗体属性 //窗体标题 this.setTitle("边界布局案例"); //设置窗体大小 this.setSize(300, 300); //设置窗体位置 this.setLocation(800, 400); //设置关闭窗体同时退出JVM this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体 this.setVisible(true); } }
边界布局管理器(BorderLayout)--注意事项:
1、不是五个部分都必须添加
2、中部组件会自动的调节大小(中间部分最强势)
3、JFrame,JDialog默认布局管理器就是BorderLayout
(二)、流式布局管理器(FlowLayout): 按照组件添加的次序将定义的组件从左至右放置到容器中,当达到容器的边界时,组件将放置在下一行中。FloeLayout可以选择以左对齐、居中对齐、以右对齐的方式排列组件。
案例代码如下:
/*
* 流式布局案例
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_3 extends JFrame{
JButton jb1,jb2,jb3,jb4,jb5,jb6;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_3 dm=new Demo1_3();
}
//构造
public Demo1_3()
{
//创建组件
jb1=new JButton("关羽");
jb2=new JButton("张飞");
jb3=new JButton("赵云");
jb4=new JButton("马超");
jb5=new JButton("黄忠");
jb6=new JButton("魏延");
//添加组件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
this.add(jb6);
//设置布局管理器,流式布局默认是中间对齐,
//我们要在new FlowLayout(FlowLayout.LEFT)设置,此时设置的是左对齐
this.setLayout(new FlowLayout(FlowLayout.LEFT));
//设置窗体属性
//窗体标题
this.setTitle("边界布局案例");
//设置窗体大小
this.setSize(300, 300);
//设置窗体位置
this.setLocation(800, 400);
//设置关闭窗体同时退出JVM
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示窗体
this.setVisible(true);
}
}
流式布局(FlowLayout)--注意事项
1、不限制他所管理的组件的大小,允许他们有最佳大小
2、当容器被缩放时,组件的位置可能变化,但是组件的大小不变
3、默认组件是居中对齐,可以通过FlowLayout(intalign)函数来指定对齐方式
(三)、网格布局GridLayout:它将容器分割成多行多列,组件被填充到每个网格中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其他的组件,当占满该行的所有网格后,接着继续在下一行从左至右放置组件。
案例代码如下:
/*
* 网格布局演示
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_4 extends JFrame{
//定义组件
int size=9;
JButton jbs[]=new JButton[size];
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_4 dm=new Demo1_4();
}
//构造
public Demo1_4()
{
//创建组件
for(int i=0;i<size;i++)
{
jbs[i]=new JButton(String.valueOf(i));
}
//设置网格布局管理器,设置3行3列,每个组件间隔水平方向10,垂直方向10 个像素
this.setLayout(new GridLayout(3,3,10,10));
//添加组件
for(int i=0;i<size;i++)
{
this.add(jbs[i]);
}
//设置窗体属性
this.setTitle("网格布局案例");
this.setSize(300,300);
this.setLocation(700,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
网格布局GridLayout --注意事项
1、组件的相对位置不随容器的缩放变化,但是组件的大小会变,也就是讲我们缩放窗口时组件之间的间隙是不会随之变化的,但是组件大小会等比例的变化
2、所有组件的大小是相同的
3、可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网格的行/列,水平间隙/垂直间隙。