创建GUI组件的步骤:
设计组件,合理布局 —> 定义界面上的响应。
GUI支持的包
AWT包:包含有基本组件类,布局管理类,容器类和接口类。
Java.awt.
Swing包:AWT包的升级版本。
javax.swing。
GUI容器与组件
组件不能独立的显示,必须要在容器上。
Java的容器分为两种:顶层容器和中间层容器。
顶层容器:可以独立浮动于屏幕上,GUI必有。
JFrame:作为应用程序的主窗口;
JApplet:小程序窗口显示;
JWindows:窗口。
中间层容器:不可独立存在。
JPanel:面板;
JScrollPane:滚动面板。
一些基本设定如下代码:
import java.awt.Color;//颜色类
import javax.swing.JFrame;//主窗口
public class Example {
public static void main(String[] args) {
//JFrame();默认的无标题信息。
JFrame f = new JFrame("My windous");
//设定窗口的大小,以像素为单位。
f.setSize(300,200);
//先调用getContentPane获得内容面板,在设置背景颜色。
f.getContentPane().setBackground(Color.BLACK);
//设置窗口可见,默认不可见。
f.setVisible(true);
}
}
标签的构造方法:
import java.awt.Label //包的导入
JLabel();//创建空标签
JLabel(String text);//创建名为text的标签
JLabel(String text, int align);//创建名字为text的标签,align是对其方式
align的值可以为:JLabel.RIGHT;JLabel.LEFT;JLabel.CENTER等。
添加标签后需要再使用getContentPane()获得主窗口的内容面板再使用add添加对象。具体见本节代码(如下):
Font类来设置字体;
用法:Font(String name, int style, int size);
三个参数name:字体,如,黑体,宋体等;
style:字型,系统提供三个整形常量来代表表示字型。
Font.PLAIN(正常体),Font.ITALIC(斜体),Font.BOLD(粗体)。
size:字号。
创建完字体对象之后,使用setFont(Font fn)方法调用。
Color类设置颜色
Color(int red, int green, int blue);
使用rgb组合。取值在0~255之间。也可以直接调用Color.red等来直接设定。
创建完对象之后,需要调用setForeground(Color c)方法来实现。
import java.awt.Color;
import java.awt.Font;
import java.awt.Label;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Example {
public static void main(String[] args) {
JFrame f = new JFrame("My windous");
f.setSize(300,200);
f.getContentPane().setBackground(Color.RED);//先调用getContentPane获得内容面板,在设置背景颜色。
JLabel l1 = new JLabel("用户名:", JLabel.RIGHT);
f.getContentPane().add(l1);//先获取内容面板,在将label内容添加在标签中
Font f1 = new Font("黑体", Font.ITALIC, 30);//先建立一个对象
l1.setFont(f1);//在使用标签对象调用
//设置标签颜色
Color c = new Color(200, 100, 150);//0~255之间,三个参数组合,也可以使用Color.red等。
l1.setForeground(c);//由l1标签调用setForeGround方法来设置标签颜色
f.setVisible(true);
}
}
Button类:
JButton(); //创建一个无文字显示的按钮
JButton(String text);创建一个内容为text的按钮。
JPanel j = new JPanel();//创建面板
f.add(j);
//按钮组件的运用
JButton b1 = new JButton("开机");
j.add(b1);
JPanel类
JPanel:中间容器,用于添加组件,这样可以使得窗口上有多个组件。
先创建JPanel对象,在使用add()方法添加即可。
布局管理器用于设置组件的显示方式和显示位置。
有以下几种布局方式:
FlowLayout:流式布局:
简单的从左到右的顺序布局。
//创建test类来继承JFrame类
class test extends JFrame{
//定义5个要显示的按钮
JButton b1,b2,b3,b4,b5;
//在构造函数中添加按钮的定义
public test() {
b1 = new JButton("按钮1");
b2 = new JButton("按钮2");
b3 = new JButton("按钮3");
b4 = new JButton("按钮4");
b5 = new JButton("按钮5");
//定义一个流式布局
FlowLayout f = new FlowLayout();
//获取窗口的内容面板
Container c = this.getContentPane();
//设置流式布局方法
c.setLayout(f);
//添加按钮
c.add(b1);
c.add(b2);
c.add(b3);
c.add(b4);
c.add(b5);
}
}
BorderLayout:边界布局:
按照东南西北中位置来布局。
//创建test类来继承JFrame类
class test extends JFrame{
//定义5个要显示的按钮
JButton b1,b2,b3,b4,b5;
//在构造函数中添加按钮的定义
public test() {
b1 = new JButton("按钮1");
b2 = new JButton("按钮2");
b3 = new JButton("按钮3");
b4 = new JButton("按钮4");
b5 = new JButton("按钮5");
//定义一个边界布局
BorderLayout f = new BorderLayout();
//获取窗口的内容面板
Container c = this.getContentPane();
//设置流式布局方法
c.setLayout(f);
//添加按钮,以及其相关位置:北南西东中。
c.add(b1,BorderLayout.NORTH);
c.add(b2,BorderLayout.SOUTH);
c.add(b3,BorderLayout.WEST);
c.add(b4,BorderLayout.EAST);
c.add(b5,BorderLayout.CENTER);
}
}
GridLayout:网格布局:
按照划分的网格区域来布局。
//创建test类来继承JFrame类
class test extends JFrame{
//定义5个要显示的按钮
JButton b1,b2,b3,b4,b5;
//在构造函数中添加按钮的定义
public test() {
b1 = new JButton("按钮1");
b2 = new JButton("按钮2");
b3 = new JButton("按钮3");
b4 = new JButton("按钮4");
b5 = new JButton("按钮5");
//定义一个网格布局,3行2列
GridLayout f = new GridLayout(3,2);
//获取窗口的内容面板
Container c = this.getContentPane();
//设置流式布局方法
c.setLayout(f);
//添加按钮
c.add(b1);
c.add(b2);
c.add(b3);
c.add(b4);
c.add(b5);
}
}
还有其他布局:CardLayout:卡片布局;GridBagLayout:网格包布局;手工布局。
setLayout(null):
将界面布局管理的主动权交给用户,由用户自行设置坐标来实现。