Java GUI 基础知识2 监听机制
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 监听机制相关推荐
- java实现分发_关于JAVA中事件分发和监听机制实现的代码实例
[实例简介] 关于JAVA中事件分发和监听机制实现的代码实例,绝对实用代码,有说明. [实例截图] [核心代码] JavaEventDispatch ├── bin │ └── com │ └ ...
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用
转载:http://blog.csdn.net/5iasp/article/details/37054171 谢谢博主 ======================================== ...
- Java GUI 基础知识
这部分主要包含AWT.组件和容器.布局管理器 Component:所有可以和用户交互的图形元素,他的子类有:输入框- Java.awt及其子包 Container:容器,容纳其他各种各样的Compon ...
- Spring容器的事件监听机制(简单明了的介绍)
文章目录 前言 事件 1. 定义事件 2. 定义监听器 3. 定义发布器 Spring容器的事件监听机制 1.事件的继承类图 监听器的继承类图 总结 前言 上一篇我们介绍了SpringFactorie ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
- Java中事件监听机制
Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...
- java事件监听机制pdf,事件监听机制(转)
事件监听机制在java编程中有很重要的应用,一般我们在处理GUI编程时,只是重写一下监听接口的perform函数即可.但事件监听在底层是如何运行的?通过下面的例子我们可以有个清楚地了解. 1. ...
- java中事件监听_Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
最新文章
- day06:02oracle体系结构_存储结构
- PMCAFF微课堂 | 运营女神揭秘产品运营推广中的场景思维
- 解决通过 Visual Studio 打不开 ui 文件的问题
- 百度转换经纬度为地址
- JAVA字符串格式化-String.format()使用
- 调用Xvid编码器流程(基于xvid1.1.0)
- 搭建golang+vscode开发环境
- 解决排列组合问题的通用算法(转)
- 标准粒子群优化算法 PSO
- 自然语言处理之语言模型(LM)
- 关于RabbitMQ启动慢问题的解决方法
- QQ安装包内置UE4是什么意义呢?会不会是奔着元宇宙,搭载了虚幻引擎的QQ在渲染数字孪生上表现更强劲?
- 在LINUX-DEBIAN系统下挂载新硬盘的方法
- Integral Object Mining via Online Attention Accumulation
- iOS开发学无止境 - 6个iOS图片文本设计的小技巧
- PowerDesigner 安装
- 抖音测试像哪个明星的软件,抖音中的测测你像哪位明星特效如何拍摄
- CCF CSP 编程题目和解答-----试题名称:炉石传说 -------201609-3
- Ubuntu 16 安装 python 依赖出现 error: command 'i686-linux-gnu-gcc' failed with exit status 1
- linux下MongoDB客户端shell基本操作
热门文章
- ubuntu上搭建php,ubuntu10.04上搭建php网站运行环境
- python的socket连接不上_Python套接字只允许一个连接,但在新的连接上断开,而不是拒绝...
- python调用java的jar包_python调用java的jar包报错127
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建12 - 空间滤波 - 使用频率域滤波降低周期噪声 - 陷波滤波、最优陷波滤波
- C语言中,scanf与scanf_s的简单区别
- 理解文档对象模型(3)
- 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值...
- .NET常用功能和代码[总结与收藏]
- 全国计算机等级考试题库二级C操作题100套(第84套)
- Linux stmac网卡代码分析----probe