Java实现AWT四大事件的详细过程

目录
  • 窗体事件
  • 鼠标事件
    • 所触发的事件
  • 键盘事件
  • 动作事件
  • 小结

常用事件的分类

Java AWT里面的事件可以简单的分为窗体事件(WindowEvent),鼠标事件(MouseEvent),键盘事件(KeyEvent),动作事件(ActionEvent)等事件。

窗体事件

窗体事件是GUI应用程序的基础,应用程序中通常是将其他的组件直接或间接的置于窗体中。在窗体中进行打开,关闭,激活,停用时,JDK提供了一个类WindowEvent用于表示这些窗体事件,定义了一个WindowListener接口的类作为窗体监听器,然后通过addWindowlistener()方法将窗体对象与窗体监听器绑定。

 package AWT;
  import java.awt.*;
  import java.awt.event.WindowEvent;
  import java.awt.event.WindowListener;
  public class ShiPeiQi {
      public static void main(String[] args) {
          final Frame f=new Frame("WindowEvent");
          f.setSize(400,300);
          f.setLocation(300,200);
          f.setVisible(true);
          f.addWindowListener(new WindowListener() {
              @Override
              public void windowOpened(WindowEvent e) {
                  System.out.println("windowOpened----窗体打开事件");
              }
              @Override
              public void windowClosing(WindowEvent e) {
                  System.out.println("windowClosing----窗体正在关闭事件");
                  ((Window)e.getComponent()).dispose();
              }
              @Override
              public void windowClosed(WindowEvent e) {
                  System.out.println("windowClosed----窗体关闭事件");
              }
              @Override
              public void windowIconified(WindowEvent e) {
                  System.out.println("windowIconified---窗体图标化事件");
              }
              @Override
              public void windowDeiconified(WindowEvent e) {
                  System.out.println("windowDeiconified------窗体取消图标化事件");
              }
              @Override
              public void windowActivated(WindowEvent e) {
                  System.out.println("windowActivated----窗体激活事件");
              }
              @Override
              public void windowDeactivated(WindowEvent e) {
                  System.out.println("windowDeactivated----窗体停用事件");
              }
          });
              }
          }

当运行程序后,依次点击窗体的最小化按钮,任务栏上的图标,单击窗体上的关闭按钮,会依次触发下面截图中的事件。

鼠标事件

我们通常会对电脑进行选择,切换界面等操作,这些操作就叫鼠标事件,包括鼠标按下,鼠标松开,鼠标点击等,因此提供了一个MouseEvent类用于表示鼠标事件,基本上所有的组件都可以产生鼠标事件,处理鼠标事件时,要通过实现MouseLinstener接口定义监听器或者通过继承适配器MouseAdapter类来实现,然后再调用AddMouseListener()方法将监听器绑定到事件源对象。

 package AWT;
 import java.awt.*;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 public class Example12 {
     public static void main(String[] args) {
         final Frame f=new Frame("MouseEvent");
         f.setLayout(new FlowLayout());
         f.setSize(300,200);
         f.setLocation(300,200);
         f.setVisible(true);
         Button but=new Button("Button");
         f.add(but);
         //为按钮鼠标设置一个监听器
         but.addMouseListener(new MouseListener() {
             @Override
             public void mouseClicked(MouseEvent e) {
                 System.out.println("mouseClicked----鼠标完成单击事件");
             }
             @Override
             public void mousePressed(MouseEvent e) {
                 System.out.println("mousePressed-----鼠标按下事件");
             }
             @Override
             public void mouseReleased(MouseEvent e) {
                 System.out.println("mouseReleased----鼠标放开事件");
             }
             @Override
             public void mouseEntered(MouseEvent e) {
                 System.out.println("mouseEntered-----鼠标进入按钮区域事件");
             }
             @Override
             public void mouseExited(MouseEvent e) {
                 System.out.println("mouseExited-----鼠标移除按钮区域事件");
             }
         });
     }
 }

当鼠标去点击按钮时之后然后将鼠标移出按钮区域,会触发以下的监听事件

所触发的事件

当鼠标对按钮进行相应的动作之后,监听器会获取相应的事件对象,从而触发相应的事件并打印出来。

public void mouseClicked(MouseEvent e) {
      if(e.getButton()==e.BUTTON1){
           System.out.println("鼠标完成左吉事件");
      }if(e.getButton()==e.BUTTON2){
          System.out.println("鼠标完成中间单击事件");
      }if(e.getButton()==e.BUTTON3){
           System.out.println("鼠标完成右击事件");
      }
    }

MouseEvent类对鼠标的按键定义了不同的常量,通过MouseEvent类的getButton()方法获取被操作按键的常量键值,来判断时哪个键的操作,单击的次数可以通过MouseEvent对象的getClickCount()方法来获取。

键盘事件

在我们进行操作的过程中,键盘也经常与用户进行交互,比如键盘的按下,释放等,这些操作被定义为键盘事件,JDK中定义了一个KeyEvent的类表示键盘事件,处理KeyEvent时间的监听器对象需要实现KeyListener接口或者继承KeyAdapter类。

 package AWT;
 import java.awt.*;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 public class Example13 {
     public static void main(String[] args) {
         Frame f=new Frame("KeyEvent");
         f.setLayout(new FlowLayout());
         f.setSize(400,300);
         f.setLocation(300,200);
         //创建文本框对象
         TextField tf=new TextField(30);
         f.add(tf);
         f.setVisible(true);
         tf.addKeyListener(new KeyAdapter() {
             @Override
             public void keyPressed(KeyEvent e) {
                 //返回所按键对应的整数值
                 int KeyCode=e.getKeyCode();
                 //返回按键的字符串描述
                 String s=KeyEvent.getKeyText(KeyCode);
                 System.out.print("输入的内容为:"+s+" ,");
                 System.out.println("对应的KeyCode为:"+KeyCode);
             }
         });
     }
 }

运行结果

TextField只允许编辑单行文本,通过

输入字符去触发键盘事件,KeyEvent类通过调用getKeyCode()方法将输入的内容对应的整数值返回,KeyEvent类中有一个静态方法getKeyText(int keyCode),可以将按键内容以String形式返回,下图是上面截图中输入内容所对应的KeyCode值。

动作事件

动作事件表示一个动作发生了,比如,在关闭文件时,可以通过键盘关闭,也可以通过鼠标关闭,即在对按钮进行关闭便触发了动作事件。动作事件用ActionEvent类表示,处理ActionEvent事件的监听器对象需要实现ActionListener接口,监听器对象在监听动作时,所处理的事件类似于"按钮按下"这样的事件。

小结

以上就是我对于AWT四大基本事件处理的简单概述,可以使我们充分的理解我们在使用键盘鼠标的时候是怎样触发监听器的,监听器是调用什么方法去处理这些事件的。

到此这篇关于Java实现AWT四大事件的详细过程的文章就介绍到这了,更多相关Java AWT事件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java awt生成签名图片如何消除锯齿化

    目录 awt生成签名图片如何消除锯齿化 项目场景 问题描述 解决方案 AWT,SWT缩小图片消除锯齿的平滑处理 缩小一副图片最常见的方法 awt生成签名图片如何消除锯齿化 项目场景 在一个线上互联网医院中,需要生成电子处方图片,图片里面会有医生的手写签名.通过java.awt的Graphics2D方式来生成处方图片,并将手写签名的图片导入其中. 问题描述 但是在签名图片导入后,就可以看到明显的锯齿. 具体导入图片代码: g2.drawImage(getImage("https://xx.jpg&

  • 如何利用Java AWT 创建一个简易计算器

    目录 一.关于AWT 二.逻辑部分 1.对于数字按钮 2.对于算术按钮 3.对于等号按钮 4.对于清除按钮 5.对于退格按钮 6.特殊插件功能 7.==例如==: 三.GIF演示 四.附完整代码 摘要:手把手教你使用 Java AWT 创建一个简易计算器. 一.关于AWT AWT (抽象窗口工具包)是一个有助于构建 GUI 的 API (图形用户界面)基于 java 应用程序.GUI使用一些图形帮助用户交互.它主要由一组的类和方法所必需的,如在一个简化的方式创建和管理的GUI按钮,窗口,框架,文

  • java图形界面AWT编写计算器

    一.前言 1)这个计算器是基于java语言下图形界面AWT编写的.其实我认为写这个计算器,实现什么功能不重要,市场也不缺这个计算器,而是在于对AWT中三大布局的及画板的使用简单控件的操作使用.通过联系熟悉掌握AWT基础为深入学习打下基础.这个计算器功能也十分简单,空有其表.不过有兴趣的话可以继续添加功能完善操作等. 2)使用平台:主要使用Myeclipse2014 3)主要知识点:java 基础; awt+swing 二.功能实现及代码展示 1)主要是layout布局的练习,对画板文本框的使用,

  • Java awt-对话框简单实现方式

    目录 Java awt-对话框简单实现 Java awt Dialog(对话框)学习 对话框有如下两点需要注意 对话框有多个重载构造器 FileDialog提供了两个方法来获取被打开/保存文件的路径 Java awt-对话框简单实现 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class dia { public static void main(String args[]) { JButton

  • java awt实现计算器功能

    本文实例为大家分享了java awt实现计算器的具体代码,供大家参考,具体内容如下 上课老师演示了一遍他的写法,由于没给代码,因此按着他的思路撸了一遍,感觉还很简单. 代码以及解释如下: import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame;

  • Java实现AWT四大事件的详细过程

    目录 窗体事件 鼠标事件 所触发的事件 键盘事件 动作事件 小结 常用事件的分类 Java AWT里面的事件可以简单的分为窗体事件(WindowEvent),鼠标事件(MouseEvent),键盘事件(KeyEvent),动作事件(ActionEvent)等事件. 窗体事件 窗体事件是GUI应用程序的基础,应用程序中通常是将其他的组件直接或间接的置于窗体中.在窗体中进行打开,关闭,激活,停用时,JDK提供了一个类WindowEvent用于表示这些窗体事件,定义了一个WindowListener接

  • vscode 配置java环境并调试运行的详细过程

    下载vscode以及安装jdk 度娘一大堆 这里不介绍 jdk最好安装jdk11及以上 vscode扩展插件有关 在vscode扩展插件中安装图示插件包,该包基本覆盖java所需的所有内容 新建一个vscode工程,并添加HelloJava.java文件 public class HelloJava{ public static void main(String[] args) { System.out.println("hello world"); } } PS:文件名要与类名一致

  • Java计算代码段执行时间的详细过程

    目录 前言 场景 代码实现 MethodBody 接口定义 CalcExecuteTimeResult 运行结果实体 ExecuteTemplate 执行模板定义 CalcExecuteTimeContext 计算执行时间上下文 测试运行 前言 在日常开发功能时,同一种功能可能会有多种实现方式.我们需要做一个取舍. 最常见的条件就是性能.可读性.可维护性. 本篇文章,我们主要讨论“性能”. 场景 假设我们现在需要计算一段代码的运行时间. 最常见的写法是,在执行这段代码前,获得一下当前的时间戳,在

  • Java实现红黑树(平衡二叉树)的详细过程

    目录 前言 红黑二叉查找树 2-3树 2-3树的插入操作 实现红黑二叉树 结尾 前言 在实现红黑树之前,我们先来了解一下符号表. 符号表的描述借鉴了Algorithms第四版,详情在:https://algs4.cs.princeton.edu/home/ 符号表有时候被称为字典,就如同英语字典中,一个单词对应一个解释,符号表有时候又被称之为索引,即书本最后将术语按照字母顺序列出以方便查找的那部分.总的来说,符号表就是将一个键和一个值联系起来,就如Python中的字典,JAVA中的HashMap

  • Java模拟qq软件的详细过程

    目录 登陆界面的实现 登陆界面代码Login类 login的监听类 LoginListener 聊天界面运行图 Client类代码 Server代码 登陆界面代码 **之前在封装代码后出现了问题,按照最初的写法,在登陆完毕后弹出聊天界面后会卡死,原因是当时登陆界面和聊天界面都是使用的主线程,我的代码没有写其他线程,无法多线程运行,因此在弹出聊天界面时线程不够用了,就卡在了监听线程里,因为在监听线程中再有新的监听就会被卡住 在宇哥的指点下,将启动服务器和客户端的部分改为线程,就解决了此问题.改善后

  • java spring整合junit操作(有详细的分析过程)

    此博客解决了什么问题: 解决测试的时候代码冗余的问题,解决了测试工程师的编码能力可能没有开发工程师编码能力的问题,解决了junit单元测试和spring注解相结合! 测试类代码:(只给大家展示测试类的代码) public class AccountServiceTest { @Test public void testFindAll(){ //1.获取容器 ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml&quo

  • Java基础之创建虚拟机对象的过程详细总结

    一.对象的创建 1.1 new 类名 虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载.解析和初始化过.如果没有,先执行相应的类加载过程. 1.2 分配内存 虚拟机为新生对象分配内存.对象所需内存大小在类加载完成后就可以确定,为对象分配内存等同于把一块确定大小的内存从Java堆中划分出来. (1)内存分配的方式有两种: ① 指针碰撞: java堆如果规整,一边是用过的内存,一边是空闲的内存,中间一个指针作为边界指示

  • 在VSCode里使用Jupyter Notebook调试Java代码的详细过程

    目录 什么是Jupyter Notebook? Jupyter Notebook主要优点 环境准备 下载 IJava 创建conda虚拟环境 搭建运行环境 测试 之前使用的那台电脑有点旧了,稍微跑一下程序就报内存不够.本来想考虑入手一台带GPU的新电脑,在商品浏览里的时候,考虑到钱包不够厚实.就选了家里另外一台配置稍微高一点的电脑拿来折腾. 平时我个人开发,主要还是在Eclipse上,新环境也装了装.其实平时学习的话,主要还是跑一跑代码段,不会跑大规模的项目,总有一种到楼下买个菜还要开车去的感觉

  • Java中的同步与异步详细介绍

    进程同步用来实现程序并发执行时候的可再现性. 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 sendmessage.该函数发送一个消

  • Java中批处理框架spring batch详细介绍

    spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作. 这些业务运营包括: 无需用户交互即可最有效地处理大量信息的自动化,复杂处理. 这些操作通常包括基于时间的事件(例如月末计算,通知或通信). 在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整). 集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中. 批处理用于每天为企业处

随机推荐