TestActionEvent.java

没有调用方法,但是有反应。反应自己要编写程序有反应。

事件模型:一定要有某些反应。

写程序,监听的操作是自动发生的,一直监听。钩子函数,(回调函数)

怎么让它自动执行,首先告诉人家你的方法名是什么,也不知道,但是这样好像也不行,

实现某个特定的接口,然后button类里面也有特定的方法。

事件分很多中,监听事件的接口也有很多。但某件发生时,封装成一个对象,当成一个参数,传递给监听事件。

栗子:TestActionEvent2.java

通过把actionCommand,把一个按钮的acitonCommand设置为别的。用来区别不同的按钮。

栗子:TFActionEvent.java

TextField tf = (TextField)e.getSource();拿到事件源,把这个源对象当作ActionEvent的父类。

所以需要强制类型转换。

栗子:TFPassword.java

内部类:

Frame像一个大管家,我们要拿到这个大管家的引用。

不需要内部的东西。

持有对方的引用。

直接访问大管家。

如下面:

门面模式。拿到管家的引用。和谁有关系,使用大管家访问他。

栗子:

package com.zhj.www;import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.*;public class TFMath {public static void main(String[] args) {new TFFrame().launchFrame();}
}
class TFFrame extends Frame{TextField num1,num2,num3;public void launchFrame() {num1 =new TextField(10);num2 =new TextField(10);num3 =new TextField(15);//初始化Label lblPlus = new Label("+");Button btnEqual = new Button("=");//btnEqual.addActionListener(new MyMonitor(this));btnEqual.addActionListener(new MyMonitor());setLayout(new FlowLayout());add(num1);add(lblPlus);add(num2);add(btnEqual);add(num3);pack();setVisible(true);}/*内部类:随意访问成员变量和方法,class文件带有美元符号是内部类*/class MyMonitor implements ActionListener{public void actionPerformed(ActionEvent e) {int n1 =Integer.parseInt(num1.getText());int n2 =Integer.parseInt(num2.getText());num3.setText(""+ (n1+n2));}}
}
/*
class MyMonitor implements ActionListener{/*TextField num1,num2,num3;public MyMonitor(TextField num1,TextField num2,TextField num3) {this.num1 = num1;this.num2 = num2;this.num3 = num3;}*//*大管家模式*//*TFFrame tfFrame =null;//持有Frame的引用public MyMonitor(TFFrame tfFrame) {this.tfFrame = tfFrame;}public void actionPerformed(ActionEvent e) {int n1 =Integer.parseInt(tfFrame.num1.getText());int n2 =Integer.parseInt(tfFrame.num2.getText());tfFrame.num3.setText(""+ (n1+n2));}
}
*/

---------------------------------------------------------------------------------------------------------------------

TestPaint.java

g就是画笔,Graphics类

paint是重写Container里的方法。

paint方法什么时候会被调用?缩小或扩大窗口,也就是重画的时候。

恢复现场->Color c = g.getColor();g.setColor(c);

先调用update()->paint()。Updata()实现双缓冲。

MouseAdapter实现MouseListener接口。

为什么要这样?

因为MouseListener有6个方法,我们需要全部写。

MouseAdapter实现了MouseListener接口,只不过是空的,

我们只需要重写我们需要的MouseAdapter的某个方法。

事件发生时,他会把这个事件的信息包装成一个对象(MouseEvent e)。

Point对象,AWT类中有一个点对象,封装了x,y。

f.repaint();//对当前点的重画,对Frame强制进行重画。

TestWindowClose.java

TestWindowClose.java

package com.zhj.www;import java.awt.Color;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class TestWindowClose {public static void main(String[] args) {new MyFrame55("MyFrame");}
}
class MyFrame55 extends Frame{public MyFrame55(String s) {super(s);/*Frame*/setLayout(null);setBounds(300,300,400,300);this.setBackground(new Color(204, 204, 255));setVisible(true);/*添加监听*///this.addWindowListener(new MyWindowMonitor());//匿名的内部类 new 一个WindowAdapter(父类)this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);System.exit(-1);}});}/*//内部类class MyWindowMonitor extends WindowAdapter{public void windowClosing(WindowEvent e) {setVisible(false);System.exit(0);//0是正常退出,-1是非正常退出。}}*/
}

事件WindowEvent类,处理事件的接口WindowListener

匿名的内部类:但要看懂,什么时候使用匿名类?

经常修改不要使用匿名类。

package com.zhj.www;import java.awt.Frame;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;public class TestKey {public static void main(String[] args) {new KeyFrame().launchFrame();}
}
class KeyFrame extends Frame{public void launchFrame() {setSize(200, 200);setLocation(300, 300);this.addKeyListener(new MyKeyMonitor());setVisible(true);}class MyKeyMonitor extends KeyAdapter{public void keyPressed(KeyEvent e) {//System.out.println("ok");int keyCode = e.getKeyCode();if(keyCode ==KeyEvent.VK_UP) {System.out.println("up");}}}
}

Java GUI 基础知识2 监听机制相关推荐

  1. java实现分发_关于JAVA中事件分发和监听机制实现的代码实例

    [实例简介] 关于JAVA中事件分发和监听机制实现的代码实例,绝对实用代码,有说明. [实例截图] [核心代码] JavaEventDispatch ├── bin │   └── com │   └ ...

  2. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    转载:http://blog.csdn.net/5iasp/article/details/37054171 谢谢博主 ======================================== ...

  3. Java GUI 基础知识

    这部分主要包含AWT.组件和容器.布局管理器 Component:所有可以和用户交互的图形元素,他的子类有:输入框- Java.awt及其子包 Container:容器,容纳其他各种各样的Compon ...

  4. Spring容器的事件监听机制(简单明了的介绍)

    文章目录 前言 事件 1. 定义事件 2. 定义监听器 3. 定义发布器 Spring容器的事件监听机制 1.事件的继承类图 监听器的继承类图 总结 前言 上一篇我们介绍了SpringFactorie ...

  5. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  6. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

  7. Java中事件监听机制

    Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...

  8. java事件监听机制pdf,事件监听机制(转)

    事件监听机制在java编程中有很重要的应用,一般我们在处理GUI编程时,只是重写一下监听接口的perform函数即可.但事件监听在底层是如何运行的?通过下面的例子我们可以有个清楚地了解. 1.     ...

  9. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

最新文章

  1. day06:02oracle体系结构_存储结构
  2. PMCAFF微课堂 | 运营女神揭秘产品运营推广中的场景思维
  3. 解决通过 Visual Studio 打不开 ui 文件的问题
  4. 百度转换经纬度为地址
  5. JAVA字符串格式化-String.format()使用
  6. 调用Xvid编码器流程(基于xvid1.1.0)
  7. 搭建golang+vscode开发环境
  8. 解决排列组合问题的通用算法(转)
  9. 标准粒子群优化算法 PSO
  10. 自然语言处理之语言模型(LM)
  11. 关于RabbitMQ启动慢问题的解决方法
  12. QQ安装包内置UE4是什么意义呢?会不会是奔着元宇宙,搭载了虚幻引擎的QQ在渲染数字孪生上表现更强劲?
  13. 在LINUX-DEBIAN系统下挂载新硬盘的方法
  14. Integral Object Mining via Online Attention Accumulation
  15. iOS开发学无止境 - 6个iOS图片文本设计的小技巧
  16. PowerDesigner 安装
  17. 抖音测试像哪个明星的软件,抖音中的测测你像哪位明星特效如何拍摄
  18. CCF CSP 编程题目和解答-----试题名称:炉石传说 -------201609-3
  19. Ubuntu 16 安装 python 依赖出现 error: command 'i686-linux-gnu-gcc' failed with exit status 1
  20. linux下MongoDB客户端shell基本操作

热门文章

  1. ubuntu上搭建php,ubuntu10.04上搭建php网站运行环境
  2. python的socket连接不上_Python套接字只允许一个连接,但在新的连接上断开,而不是拒绝...
  3. python调用java的jar包_python调用java的jar包报错127
  4. 第5章 Python 数字图像处理(DIP) - 图像复原与重建12 - 空间滤波 - 使用频率域滤波降低周期噪声 - 陷波滤波、最优陷波滤波
  5. C语言中,scanf与scanf_s的简单区别
  6. 理解文档对象模型(3)
  7. 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值...
  8. .NET常用功能和代码[总结与收藏]
  9. 全国计算机等级考试题库二级C操作题100套(第84套)
  10. Linux stmac网卡代码分析----probe