- GUI:图形用户界面
用图形的方式,来显示计算机操作的界面,这样更方便更直观
- CLI:命令行用户接口
就是常用的Dos命令行接口
- Java为GUI提供的对象都存在java.Awt和java.Swing两个包中。
二、Awt和Swing
java.awt:AbstractWindow ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
java.swing:在awt的基础上,简历的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
三、继承关系图
四、布局管理器
五、Frame演示
1、component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。
2、Frame 是带有标题和边框的顶层窗口
六、事件监听机制
事件监听机制的组成。
|-- 事件源(组件)
|-- 事件(Event)
|-- 监听器(Listener)
|-- 处理方式(引发事件后的处理方式)
不是所有事件源都能承载事件
事件和监听器都是有对应关系的。
2、举例描述事件监听的原理
3、事件监听机制流程图
3、添加窗体监听
/* * 在API接口文档内Frame类没有addWindowListener方法,则找Frame的父类Window, * 在其父类内发现有addWindowListener(WindowListener l) 方法,进一步深入WindowListener,发现WindowListener * 是一个接口,此接口有7个方法,而我们只想实现其中的一个方法windowClosing(实现接口内方法,可以通过抽象类,但是抽象类实现的话 * 必须把接口内所有的方法都实现),所以找WindowListener接口的子类WindowAdapter,这个类实现了接口的所有方法,而我们只需要 * 调用其中的windowClosing即可 * * -->WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。 * */ /*添加窗体监听 -->用于关闭窗口 */ f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } });
4、添加按钮监听
/*6、添加按钮监听 -->需求:一点击按钮,窗口关闭*/ b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("button run...."); System.exit(0); } });
----------------->frame到监听的完整代码<-------------------
package com.JavaGui.AwtDemo; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * @Author wufq * @Date 2020/8/31 11:20 */ public class frameDemo { public static void main(String[] args){ /*1、创建窗体并做基本设置*/ Frame f = new Frame("My Frame");//设置窗口标题 //设置窗口像素(即:大小)(宽,高) f.setSize(500,400); //设置窗口显示的位置,(最左边,最上边) f.setLocation(400,150); // f.setBounds(500,400,400,150); -->直接可以设置像素和位置 f.setLayout(new FlowLayout()); //设置流式布局 -->按钮总会在窗口的左上角显示,所以需要进行布局。设置以后就会显示正常的位置 /*2、建立组件*/ Button b = new Button("一个按钮"); /*3、将组件添加到窗体上*/ f.add(b); /* * 在API接口文档内Frame类没有addWindowListener方法,则找Frame的父类Window, * 在其父类内发现有addWindowListener(WindowListener l) 方法,进一步深入WindowListener,发现WindowListener * 是一个接口,此接口有7个方法,而我们只想实现其中的一个方法windowClosing(实现接口内方法,可以通过抽象类,但是抽象类实现的话 * 必须把接口内所有的方法都实现),所以找WindowListener接口的子类WindowAdapter,这个类实现了接口的所有方法,而我们只需要 * 调用其中的windowClosing即可 * * -->WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。 * */ /*5、添加窗体监听 -->用于关闭窗口 */ f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); /*6、添加按钮监听 -->需求:一点击按钮,窗口关闭*/ b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("button run...."); System.exit(0); } }); /*4、让窗体显示*/ f.setVisible(true); System.out.println("over"); } }
5、鼠标和键盘监听
package com.JavaGui.AwtDemo; import java.awt.*; import java.awt.event.*; /** * @Author wufq * @Date 2020/9/1 11:17 */ public class MouseAndKeyDemo { private Frame f; private TextField tf; private Button but; //构造方法初始化 public MouseAndKeyDemo(){ ini(); } private void ini() { f = new Frame("演示鼠标和键盘监听"); //设置窗口 f.setBounds(400,500,400,300); //设置设置窗口像素和显示位置 f.setLayout(new FlowLayout());//设置流式布局 tf = new TextField(15); //设置文本框大小 but = new Button("确认"); f.add(tf); //窗体添加文本 f.add(but); MyEvent(); //窗体事件 f.setVisible(true); //窗体显示 } private void MyEvent() { //让窗体具有关闭性 f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); //在按钮上添加一个鼠标监听 but.addMouseListener(new MouseAdapter() { private int count = 1; @Override public void mouseClicked(MouseEvent e) { //鼠标单击事件 if(e.getClickCount()==2){ //e.getClickCount()==2 鼠标双击事件 tf.setText("Mouse..."+count++); } } }); //给文本框添加键盘监听 tf.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { //打印输出按键信息 // System.out.println(KeyEvent.getKeyText(e.getKeyCode())+":::"+e.getKeyCode());//4:::52 D:::68 //输入0~9的数字 int code= e.getKeyCode(); if(!(code>=KeyEvent.VK_0 && code<= KeyEvent.VK_9)){ System.out.println("必须是数字!"); e.consume(); } //crtl+enter if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){ System.out.println("run...."); } } }); } public static void main(String[] args){ new MouseAndKeyDemo(); } }