我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于Java GUI 事件处理方式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于Java GUI 事件处理方式

事件处理主要涉及:事件源,事件,事件处理者

在GUI中事件源是事件发生的场所,通常是各个组件,如被单击的按钮;事件是用户对界面的操作,如操作键盘是触发的键盘事件;而事件处理者则是对收到的事件经行处理的程序,也称监听器。

java.awt.event包中实现对事件处理的相关类和接口

  • 以Event结尾的类:事件类,如ActionEvent , WindowEvent , MouseEvent , KeyEvent
  • 以Listener结尾的接口:是一些与特定事件相关的的监听器接口,每个接口都定义了需要特定监听器实现的方法,是事件处理者的具体实现,如ActionListener , WindowListener ,MouseListerer , KeyListener
  • 以Adapter结尾的类(即适配器类):是一些已经实现了所有方法的特殊接口,是为了简化代码引入的一种监听器手段,只需要重写需要的方法即可。但是由于Java的单继承特性,如果要使用多种监听器或此类已经有了父类则无法继承适配器类了,如 WindowAdapter , MouseAdapter , KeyListener , 无 ActionEvent

注意:

事件处理者,即监听器为了能够处理某种类型的事件,必须实现与该事件类型相对的接口,即成为一个实现某接口的类对象。

事件是通过事件处理者包含的方法传入的,而该方法就是实现接口时必须实现的方法。

如ActionListener接口中的 void actionPerformed( ActionEvent e )方法。

如:单击按钮对 应于动作事件即(ActionEvent),按钮事件处理者是实现例动作事件对应的Listener接口的 类对象,需要调用按钮的addActionListener()方法注册,该类是重写ActionListener 接口中的void actionPerformed( ActionEvent e )方法


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; 
public class Test{
    public static void main(String[] args) {
        JFrame frame = new JFrame("理解事件处理");
        frame.setDefaultCloseOperation(3);
        frame.setLayout(null);
 
        //创建按钮对象
        JButton button = new JButton("请单击本次按钮");
        button.setBounds(120,60,120,30);
        frame.add(button);
        //创建按钮监听器并注册,参数为事件处理者对象
        ButtonHandler buttonHandler = new ButtonHandler();
        button.addActionListener(buttonHandler);//与单击事件相关的授权处理的方法
 
        frame.setBounds(400,200,400,200);
        frame.setVisible(true);
    }
}
 
class ButtonHandler implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        System.out.println("单击一次按钮");
    }
}

效果图:

从上例中可以看出编写事件处理可大致分为三步:

  • 第一步:创建某组件对象,并考虑该组件对象与哪个或哪些事件相关。如创建按钮对象,相关的事件是动作事件,即ActionEvent。
  • 第二步:编写该组件对象的事件处理者类,即实现要处理事件对应的监听器接口,如编写事件处理者ButtonHandler类,实现ActionEvent对应的ActionListener接口,具体来说就是实现接口中的void actionPerformed( ActionEvent e )方法,在该方法中加入处理事件的代码。
  • 第三步:创建事件处理者类的实例,并调用组件对象的对应该类事件的添加方法来注册监听器,如调用按钮的addActionListener( ActionListener 1) 方法添加 ButtonHandler类实例。

例:


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Test{
    public static void main(String[] args) {
        JFrame frame = new JFrame("深入掌握事件处理");
        frame.setDefaultCloseOperation(3);
        frame.setLayout(null);
        //创建提示 信息
        JLabel label1 = new JLabel("请在窗体内移动鼠标");
        label1.setBounds(15,5,200,25);
        frame.add(label1);
        JLabel label2 = new JLabel("或按住鼠标左键拖动鼠标");
        label2.setBounds(15,30,200,25);
        frame.add(label2);
        //创建文本框对象,检测
        JTextField text = new JTextField(30);
        text.setBounds(15,55,200,30);
        frame.add(text);
        //注册监听器,参数为事件处理者对象
        MouseListenerImp mouse = new MouseListenerImp(text);//事件处理者类  实例化
        frame.addMouseListener(mouse);
        frame.addMouseMotionListener(mouse);
        frame.addWindowListener(mouse); 
        frame.setBounds(500,250,300,150);
        frame.setVisible(true);
    }
}
 
//编写事件处理对象类  实现鼠标窗体的相关接口
class MouseListenerImp implements MouseListener, MouseMotionListener, WindowListener{
    JTextField text; 
    public MouseListenerImp(JTextField text){
        this.text = text;
    }
    public void mouseDragged(MouseEvent e){ //提供拖拽时的鼠标坐标
        String s = "托拽鼠标,坐标: x =" + e.getX() + "y = " + e.getY();
        text.setText(s);//在文本框中可输出
    }
    public void mouseEntered(MouseEvent e) {  //检查鼠标是否在窗体内
        String s = "鼠标离开了窗体";
        text.setText(s);//在文本框中可输出
    }
    public void mouseExited(MouseEvent e) {   //检查鼠标是否在窗体内
        String s = "鼠标进入了窗体";
        text.setText(s);//在文本框中可输出
    }
    public void windowClosing(WindowEvent e) {//为了式窗口能正常关闭
        System.exit(1);
    }
    //不打算实现的方法,但是因为实现接口,所以要写出来
    public void mouseMoved(MouseEvent e){}
    public void mouseClicked(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e){}
    public void windowOpened(WindowEvent e){}
    public void windowClosed(WindowEvent e){}
    public void windowIconified(WindowEvent e){}
    public void windowDeiconified(WindowEvent e){}
    public void windowActivated(WindowEvent e){}
    public void windowDeactivated(WindowEvent e){}
}

效果图:

上述代码的class MouseListenerImp implements MouseListener, MouseMotionListener, WindowListener 同时实现了三个接口,要实现接口需要写全部重写接口中的方法,但如果将其中某个接口用Adapter类 代替则可有】优化代码 即 extends MouseAdapter

事件的种类:

  • 组件事件ComponentEvent:组件尺寸的变化和移动
  • 容器事件ContainerEvent:组件增加或移动
  • 窗口事件WindowEvent:关闭窗口,激活窗口闭合,最大化,最小化
  • 焦点事件FocusEvent:焦点的获得与失去
  • 键盘事件KeyEvent:键的按下或释放
  • 鼠标事件MouseEvent:鼠标单击与移动
  • 动作事件ActionEvent:单击按钮,在文本框中按Enter键
  • 项目事件ItemEvent:从选择框或列表框中选择一项
  • 调节事件AdjustEvent:移滚动条上的滑块以调节数值
  • 文本事件TextEvent:文本对象的改变

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于Java GUI 事件处理方式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java GUI事件处理方式是什么

本篇内容主要讲解“Java GUI事件处理方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java GUI事件处理方式是什么”吧!事件处理主要涉及:事件源,事件,事件处理者在GUI中事件
2023-06-21

android事件处理方式有哪些

Android事件处理方式有以下几种:1. 匿名内部类:通过实现回调接口或重写事件监听器的方法来处理事件。2. 内部类:将事件处理逻辑封装在专门的内部类中,然后在外部类中调用内部类的方法来处理事件。3. 外部类:将事件处理逻辑封装在独立的外
2023-08-18

基于java文件上传-原始的Servlet方式

前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,
2023-05-31

基于事件的异步编程模式EMP如何理解

基于事件的异步编程模式EMP如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。.NET1.0中基于IAsyncResult设计模式的异步编程模型(APM),它使用Sys
2023-06-17

lambda 表达式在 GUI 编程和事件处理中的应用是什么?

lambda 表达式在 gui 编程和事件处理中,可用于简洁地定义内联函数,以方便:为小部件分配事件处理程序(如按钮单击事件);将回调函数传递给事件循环(如键盘按下事件)。例如,在 gui 编程中,lambda 表达式可用于为一个按钮创建单
lambda 表达式在 GUI 编程和事件处理中的应用是什么?
2024-04-25

Android事件处理的两种方式详解

事件是一种有用来收集用户与应用程序互动数据的互动组件,如按键或触摸屏等放置事件,因为每个事件从Android框架维护事件队列先入先出(FIFO)基础上的队列。可以在程序中捕获这些事件,按要求并采取适当的动作
2023-02-28

java处理按钮点击事件的方法

不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象。AWT时间处理机制的概要:1. 监听器对象是一个实现了特定监听器接口(listener interface)的类
2023-05-31

Java Swing中事件处理方法有哪些

这篇文章将为大家详细讲解有关Java Swing中事件处理方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Swing是目前Java中不可缺少的窗口工具组,是用户建立图形化用户界面(GUI)程序的强
2023-06-03

springevent事件异步处理方式(发布,监听,异步处理)

这篇文章主要介绍了springevent事件异步处理方式(发布,监听,异步处理),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-14

Android事件处理的两种方式是什么

这篇文章主要讲解了“Android事件处理的两种方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android事件处理的两种方式是什么”吧!安卓提供了两种方式的事件处理:基于回调的事
2023-07-05

Android触屏事件的处理方式是什么

Android触屏事件的处理方式是通过监听和响应触摸事件来实现。具体来说,可以通过以下几种方式来处理触屏事件:1. 在Activity或Fragment中重写onTouchEvent()方法,通过判断MotionEvent的动作类型来处理触
2023-08-11

Java事件与错误处理方法是什么

这篇文章主要讲解了“Java事件与错误处理方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java事件与错误处理方法是什么”吧!  12.1事件处理  传授新知  消息驱动、事件处理
2023-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录