【Java-GUI】03 事件监听
——1、监听机制案例
简答理解:操作驱动程序执行
完整的操作体系:事件源、事件、监听器、注册监听
案例:
点击OK按钮,让上方的输入框写入一段字符
package cn.dzz; import javafx.scene.layout.Border;
import javafx.scene.layout.Pane; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Main {
public static void main(String[] args) {
Frame frame = new Frame("GUI-Lesson"); // 组件添加
Box verticalBox = Box.createVerticalBox();
TextField textField = new TextField(20);
Button ok = new Button("ok");
verticalBox.add(textField);
verticalBox.add(ok);
frame.add(verticalBox, BorderLayout.CENTER); // 事件处理
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setText("Hello Java-GUI !!!");
}
}); frame.pack();
frame.setVisible(true);
}
}
——2、常见API
AWT将事件定义了两个类别:
简单事件和复杂事件
简单事件
ComponentEvent 组件事件(窗体大小,位置,显示状态发生变化触发) ContainerEvent 容器事件(向容器添加,删除组件触发) WindowEvent(打开,关闭,最小化最大化触发) FocusEvent(获取焦点,失去焦点触发) KeyEvent(按下,松开,单击触发) MouseEvent(单击,按下,松开,移动触发) PainteEvent(组件绘制事件,自定义)
复杂事件
ActionEvent
动作事件,当按钮、菜单项被单击
在TextField中按下Enter键触发 AjustmentEvent
调节时间,在滑动条上移动滑块以调节数值时触发 ItemEvent
选项时间,当用户选中某项,取消选中时触发 TextEvent
文本事件,当文本框,文本域里的文字发生改变时触发
对应的监听器对象
ActionListener 动作监听 ItemListener 项监听 MouseMotionListener 鼠标移动监听 MouseListener 鼠标监听 KeyListener 按键监听 FocusListener 焦点监听 AdjustmentListener 调整监听 ComponentListener 组件监听 WindowListener 窗体监听 ContainerListener 容器 TextListener 文本监听
案例:
package cn.dzz;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Main {
public static void main(String[] args) {
// 创建窗体
Frame frame = new Frame(); // 这个添加要放在组件添加之前(组件加入才会被监听到)
frame.addContainerListener(new ContainerListener() {
// 该方法监听窗体容器的组件添加
@Override
public void componentAdded(ContainerEvent e) {
Component child = e.getChild();
System.out.println("窗体容器添加了 :" + child);
}
// 该方法监听窗体容器的组件移除
@Override
public void componentRemoved(ContainerEvent e) {
Component child = e.getChild();
System.out.println("窗体容器移除了 :" + child);
}
}); // 画好的组件
Box horizontalBox = Box.createHorizontalBox(); Choice choice = new Choice();
choice.add("A");
choice.add("B");
choice.add("C"); TextField textField = new TextField(30); horizontalBox.add(choice);
horizontalBox.add(textField); frame.add(horizontalBox, BorderLayout.CENTER); // 增加组件的事件监听
textField.addTextListener(new TextListener() {
@Override
public void textValueChanged(TextEvent e) {
// 事件触发,获取组件的文本内容
String text = textField.getText();
System.out.println("输入框的内容:" + text);
}
});
choice.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
Object item = e.getItem();
System.out.println("下拉选择的内容:" + item );
}
}); // 可见 与 自适应
frame.setVisible(true);
frame.pack();
}
}
控制台打印的内容:
输入框的内容:我去恶趣
输入框的内容:我去恶趣味
输入框的内容:我去恶趣味
输入框的内容:我去恶趣味
输入框的内容:我去恶趣味
输入框的内容:我去恶趣
输入框的内容:我去恶
下拉选择的内容:B
下拉选择的内容:C
下拉选择的内容:A
组件添加到窗体容器时触发监听器:
窗体容器添加了 :javax.swing.Box[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=]
按X关闭窗口的案例
package cn.dzz;
import java.awt.*;
import java.awt.event.*; public class Main {
public static void main(String[] args) {
// 创建窗体
Frame frame = new Frame();
frame.setBounds(200,200,500,300); frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
//super.windowClosing(e);
System.exit(0);
}
}); frame.setVisible(true);
}
}
【Java-GUI】03 事件监听的更多相关文章
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
- 创建图形用户界面GUI和事件监听机制的简单实现(java)
创建图形化界面 1.创建Frame窗体 2.对窗体进行基本设置 比如:大小.位置.布局 3.定义组件 4.将组建通过窗体添加到窗体中 5.让窗体显示,通过setVisib ...
- Java界面编程—事件监听机制
组件首先要先注册事件处理器,当用户单击组件.移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source). 接受.解 ...
- Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
- Java 中的事件监听机制
看项目代码时遇到了好多事件监听机制相关的代码.现学习一下: java事件机制包含三个部分:事件.事件监听器.事件源. 1.事件:继承自java.util.EventObject类,开发人员自己定义. ...
- Java Spring 自定义事件监听
ApplicationContext 事件 定义一个context的起动监听事件 import org.springframework.context.ApplicationListener; imp ...
- 图形用户界面(GUI)事件监听机制——窗体事件Frame
窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...
- [javaSE] GUI(事件监听机制)
外部动作——>事件源(组件)——>事件对象——>监听器 获取Frame对象,与上节一样 调用Frame对象的addWindowListener()方法,参数:WindowListen ...
- 转:java中的事件监听是怎样实现随时监听的
http://blog.csdn.net/qq369201191/article/details/51204006
随机推荐
- numpy基础--线性代数
以下代码的前提:import numpy as np 线性代数(如矩阵乘法.矩阵分解.行列式以及其他方阵数学等)是任何数组库的重要组成部分.numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方 ...
- mvn 打包报错:no compiler is provided in this environment
最近公司换了电脑,系统也从 win7 升级到 win11,开发环境都重新安装了一遍,然后在 idea 用mvn 执行打包命令 mvn clean package 报错: no compiler is ...
- fs.1.10 ON rockylinux8 docker镜像制作
概述 freeswitch是一款简单好用的VOIP开源软交换平台. rockylinux docker上编译安装fs1.10版本的流程记录. 环境 docker engine:Version 24.0 ...
- The solution of P5339
problem 容斥好题,结果题解里面一堆 \(\text{NTT}\). 如果我们去掉有多少个人喜欢什么东西的条件,那么这个题就直接枚举有 \(i\) 组同学会一起讨论蔡徐坤.这一个问题十分容易. ...
- INFINI Labs 产品更新 | Easysearch 1.8.2 发布优化 CCR 性能
INFINI Labs 产品又更新啦~,包括 Easysearch v1.8.0.Gateway.Console.Agent.Loadgen v1.25.0.本次各产品更新了很多亮点功能,如 Easy ...
- EyeLink 1000 plus(桌面式)眼动仪使用指导
一.简介 眼动追踪是测量眼睛运行的过程.眼动追踪研究的最关注的事件是确定人类或者动物看的地方(比如:"注视点"或"凝视点").更准确来说是通过仪器设备进行图像处 ...
- CLR via C# 笔记 -- 计算限制的异步操作(27)
1. 线程池基础. 创建和销毁线程是一个昂贵的操作,要耗费大量时间.太多的线程会浪费内存资源.由于操作系统必须调度可运行的线程并执行上下文切换,所以大多的线程还对性能不利.为了改善这个情况,CLR包含 ...
- Netty(二)线程模型
1. Netty概述 虽然Java已经提供了NIO,但原生NIO仍存在部分问题: NIO的类库和API繁杂,使用麻烦.需要熟练掌握Selector.ServerSocketChannel.Socket ...
- arm linux 移植 ffmpeg 库 + x264 + x265
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- 【论文阅读】Pylot: A Modular Platform for Exploring Latency-Accuracy Tradeoffs in Autonomous Vehicles
参考与前言 resource 代码:https://github.com/erdos-project/pylot 论文地址:https://www.ionelgog.org/data/papers/2 ...