1、GUI全称: Graphical User Interface
2、Awt与Swing的区别:
Java.awt是属于重量级控件,需要调用本地系统方法,比较依赖平台,移植性比较差。java.Swing是基于awt的图形化界面系统,完全用JAVA编写,移植性比较强,属于轻量级控件。
3、布局管理:
(1)FlowLayout(流式布局):从左到右的顺序排列(默认情况下组件居中)
(2)BoderLayout(边界布局):按东、南、西、北、中的顺序排列
(3)GridLayout(网格布局):规矩的矩阵
(4)CardLayout(卡片布局):非规则的矩阵
4、Frame(窗体):
(1)构造函数:Frame(String title) , title为窗体标题
(2)是否显示窗体函数: setVisible(Boolean b) b为true显示,为false不显示
(3)设置大小的函数:setSize(长,宽)
(4)窗体在屏幕上面显示的位置:setLocation(横坐标,纵坐标)
5、创建图形化界面的步骤:
(1)创建Frame窗体
(2)对窗体进行基本设置(大小、显示位置、布局之类的)
(3)定义组件
(4)将组件通过add()方法添加到窗体中
(5)通过setVisible(TRUE)方法将窗体显示
(6)总体设置函数:setBounds(int x, int y , int width, int height)
6、事件监听机制流程图
7、事件监听机制的特点:
(1)事件源:AWT包或者SWING包中的图形化界面组件
(2)事件:每一个事件源都有自己特有的事件
(3)监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中
(4)事件处理:
注:(1)、(2)、(3)在java中都已经定义好了,只有(4)才是用户自己需要实现的
8、窗体事件
(1)用的最多的是“关闭”、“最大化”、“最小化”事件
(2) 监听器类继承windowAdapter抽象类,因windowAdapter已经覆写了windowLinstener 中的所有方法
9、Action(活动)事件、鼠标(Mouse)事件、键盘(Key)事件、对话框(Dialog)事件,
鼠标事件和键盘事件是在compent组件中;Dialog有save、load俩种模式,默认是load(打开)模式。
10.菜单项:MenuBar、Menu、
11键盘监听器代码:
package gui;
import java.awt.*;
import java.awt.event.*;
public class Frame01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame f=new Frame("first title");
Button b=new Button("第一个小按钮");
TextField t=new TextField(20);
//窗体尺寸设计
f.setSize(300, 200);
f.setLocation(100,200);
//窗体可见
f.setVisible(true);
//组件布局管理: 流式布局
f.setLayout(new FlowLayout());
//组件的创建及添加
f.add(b);
f.add(t);
//添加窗体监听事件
f.addWindowListener(new WinAdapter());
b.addActionListener(new Act());
b.addMouseListener(new MouseL());
b.addKeyListener(new KeyL());
t.addKeyListener(new KeyL());
}
}
/*
一般监听器超过3个监听事件处理时,需要使用适配器监听器
其目的是为了方便创建监听器对象
*/
//窗体监听器事件类
class WinAdapter extends WindowAdapter
{
//关闭事件
public void windowClosing(WindowEvent e)
{
System.out.println("将窗体关闭");
System.exit(0);
}
//活化事件
public void windowActivated(WindowEvent e)
{
System.out.println("活化事件产生了");
}
}
//按钮监听事件类
class Act implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("触动按钮动作发生了");
}
}
//鼠标监听器事件类
class MouseL extends MouseAdapter
{
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2)
System.out.println("双击按钮");
System.out.println("单击按钮");
}
}
//键盘监听器
class KeyL extends KeyAdapter{
public void keyPressed(KeyEvent e){
if(!(e.getKeyCode()>=e.VK_0 && e.getKeyChar()<=e.VK_9))
{
System.out.println("只能输入数字");
//不符合要求的字符不能进入文本框中
e.consume();
}
}
}
12、菜单项界面代码:
package gui;
import java.awt.event.*;
import java.awt.*;
public class Menu1 {
private Frame f;
private MenuBar mb;
private Menu m,m1;
private MenuItem mi,mi1,m2;
public Menu1(){
init();
event();
}
//初始化函数
private void init(){
f=new Frame("第一个菜单栏项目");
mb=new MenuBar();
m=new Menu("文件");
m1=new Menu("新建");
mi=new MenuItem("文件夹");
m2=new MenuItem("文本");
mi1=new MenuItem("退出");
mb.add(m);
m.add(m1);
m.add(mi1);
m1.add(mi);
m1.add(m2);
f.setMenuBar(mb);
f.setBounds(300, 200, 500, 300);
f.setVisible(true);
}
//监听器函数
private void event(){
//窗体监听器
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//子条目监听器
mi1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Menu1();
}
}