GUI:Graphical User Interface 图形用户接口
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中
CLI:Common line User Interface 命令行用户接口
Awt:Abstract Window ToolKit(抽象工具包),需要调用本地系统方法实现功能,属于重量级控件。
Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。
常见的布局管理器:
FlowLayout: 流式布局管理器,从左到右的顺序排列,Panel默认的布局管理器
BorderLayout: 边界布局管理器,中东南西北,Frame默认的布局管理器
GridLayout: 网格布局管理器,规则的矩阵
CardLayout: 卡片布局管理器,选项卡
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中
CLI:Common line User Interface 命令行用户接口
Awt:Abstract Window ToolKit(抽象工具包),需要调用本地系统方法实现功能,属于重量级控件。
Swing:在Awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。
Container:为容器,是一个特殊的组件,该组件可以通过add方法添加其他组件进来。
Swing继承关系图:
常见的布局管理器:
FlowLayout: 流式布局管理器,从左到右的顺序排列,Panel默认的布局管理器
BorderLayout: 边界布局管理器,中东南西北,Frame默认的布局管理器
GridLayout: 网格布局管理器,规则的矩阵
CardLayout: 卡片布局管理器,选项卡
GridBagLayout: 网格包布局管理器,非规则的矩阵
创建图形化界面:
1、创建frame窗体
2、对窗体进行基本设置(例如:大小、位置、布局)
3、定义组件
4、将组件通过窗体的add方法添加到窗体中
5、让窗体显示,通过setVisible(true)
代码:
import java.awt.*;
public class code
{
public static void main(String[] args) {
Frame f = new Frame("my awt");
f.setSize(500,400);
f.setLocation(300, 200);
f.setLayout(new FlowLayout());
Button b = new Button("我是一个按钮");
f.add(b);
f.setVisible(true);
}
}
事件监听机制的特点:
1.事件源:就是awt包或者swing包中的那些图形界面组件。
2.事件:每一个事件源都有自己特有的对应事件和共性事件。
3.监听器:将可以触发某个事件的动作(不止一个动作)都已经封装到了监听器中。
4.事件处理
事件源、事件、监听器,以上三者在Java中都已经定义好了,直接获取其对象用就可以。
我们要做的事情是对产生的动作进行处理。
窗口事件演示 代码:
import java.awt.*;
import java.awt.event.*;
public class code
{
public static void main(String[] args) {
Frame f = new Frame("my awt");
f.setSize(500,400);//大小
f.setLocation(300, 200);//桌面位置
f.setLayout(new FlowLayout());
Button b = new Button("我是一个按钮");
f.add(b);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("关闭");
System.exit(0);
}
public void windowActivated(WindowEvent e) {
System.out.println("开启");
}
});//匿名内部类
f.setVisible(true);//显示
}
}
鼠标事件演示 代码:
import java.awt.*;
import java.awt.event.*;
public class code
{
public static void main(String[] args) {
new Mouse();
}
}
class Mouse
{
private Frame f;
private Button but;
Mouse(){
init();
}
public void init(){
f = new Frame("my frame");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
but = new Button("my button");
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent() {
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("action ok");
}
});
but.addMouseListener(new MouseAdapter() {
private int num = 1;
private int num1 = 1;
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入到改组件"+num++);
}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2)
System.out.println("点击动作"+num1++);
}
});
}
}
键盘事件演示 代码:
import java.awt.*;
import java.awt.event.*;
public class code
{
public static void main(String[] args) {
new Mouse();
}
}
class Mouse
{
private Frame f;
private Button but;
private TextField tf;
Mouse(){
init();
}
public void init(){
f = new Frame("my frame");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf = new TextField(20);//文本框
but = new Button("my button");
f.add(tf);
f.add(but);
myEvent();
f.setVisible(true);
}
private void myEvent() {
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int count = e.getKeyCode();
if(count>=KeyEvent.VK_0 && count <=KeyEvent.VK_9) {
System.out.println(count+"--是非法的");
e.consume();
}
}
});
//给按钮添加一个键盘监听
but.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
System.exit(0);
}
}
});
but.addMouseListener(new MouseAdapter() {
private int num = 1;
private int num1 = 1;
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入到改组件"+num++);
}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2)
System.out.println("点击动作"+num1++);
}
});
}
}