Java 入门图形用户界面设计之事件处理上

 更新时间:2022年02月16日 15:45:27   作者:小旺不正经  
图形界面(简称GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,本篇精讲Java语言中关于图形用户界面的事件处理

Java程序设计 图形用户界面 【七】事件处理上

事件处理

事件和监听器

事件:表示一个对象发生状态变化

监听器:不断地监听事件的变化,并根据这些事件进行相应地处理

事件类 EventObject类

EventObject类的定义格式

public class EventObject extends Object implements Serializable{
	public EventObject(Object source){
	// 构造一个发生事件的对象
	}
	public Object getSource(){
	// 返回一个事件对象
	}
	public String toString(){
	// 得到信息
	}
}

Java事件处理流程

image-20220211152021277

窗体事件

WindowListener是专门处理窗体事件的监听接口

方法 作用
void windowActivated(WindowEvent e) 将窗口变为活动窗口时触发
void windowDeactivated(WindowEvent e) 将窗口变为不活动窗口时触发
void windowClosed(WindowEvent e) 当窗口被关闭时触发
void windowClosing(WindowEvent e) 当窗口正在关闭时触发
void windowIconified(WindowEvent e) 窗口最小化时触发
void windowDeiconified(WindowEvent e) 窗口从最小化恢复到正常状态时触发
void windowOpened(WindowEvent e) 窗口打开时触发

实现WindowListener

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class WindowEventHandle implements WindowListener {
    @Override
    public void windowActivated(WindowEvent e) {
        System.out.println("窗口被选中");
    }

    @Override
    public void windowClosed(WindowEvent e) {
        System.out.println("窗口被关闭");
    }

    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println("窗口关闭");
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        System.out.println("取消窗口选中");
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        System.out.println("窗口从最小化恢复");
    }

    @Override
    public void windowIconified(WindowEvent e) {
        System.out.println("窗口最小化");
    }

    @Override
    public void windowOpened(WindowEvent e) {
        System.out.println("窗口被打开");
    }
}

在窗体上注册事件监听器

import javax.swing.*;
import java.awt.*;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.addWindowListener(new WindowEventHandle());
        frame.setSize(500,300);
        frame.setBackground(Color.BLUE);
        frame.setLocation(500,500);
        frame.setVisible(true);
    }
}

image-20220211153339270

监听适配器

方便用户进行事件处理的实现。以WindowAdapter为例,用户只要继承了此类,就可以根据自己的需要覆写方法,如果现在只关心窗口关闭方法,则只在子类中覆写windowClosing()方法即可

通过WindowAdapter实现监听

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class WindowEventHandle extends WindowAdapter {
    @Override
    public void windowClosing(WindowEvent e) {
        super.windowClosing(e);
        System.out.println("窗口关闭");
        System.exit(1);
    }
}

而在窗体操作的代码中,直接使用以上的监听器类即可

import javax.swing.*;
import java.awt.*;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.addWindowListener(new WindowEventHandle());
        frame.setSize(500,300);
        frame.setBackground(Color.BLUE);
        frame.setLocation(500,500);
        frame.setVisible(true);
    }
}

image-20220211160600148

使用匿名内部类

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;

public class Hello {
    public static void main(String[] args) {
        JFrame frame = new JFrame("一");
        frame.addWindowListener(new WindowEventHandle(){
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(1);
            }
        });
        frame.setSize(500,300);
        frame.setBackground(Color.BLUE);
        frame.setLocation(500,500);
        frame.setVisible(true);
    }
}

如果现在使用适配器操作类,则直接编写匿名内部类就可以减少监听类的定义

到此这篇关于Java 入门图形用户界面设计之事件处理上的文章就介绍到这了,更多相关Java 事件处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java的四种引用方式

    Java的四种引用方式

    这篇文章主要介绍了Java的四种引用方式,Java的引用方式主要包括强引用、软引用、弱引用、虚引用;下面文章便来详细介绍这四种引用方式,需要的朋友可以参考一下
    2021-10-10
  • 为什么不推荐使用BeanUtils属性转换工具示例详解

    为什么不推荐使用BeanUtils属性转换工具示例详解

    这篇文章主要介绍了为什么不推荐使用BeanUtils属性转换工具,本文通过示例代码给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 如何给Cacheable的key加上常量

    如何给Cacheable的key加上常量

    这篇文章主要介绍了如何给Cacheable的key加上常量的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java api返回值的标准化详解

    java api返回值的标准化详解

    这篇文章主要介绍了java api返回值的标准化详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java Runnable和Thread实现多线程哪个更好你知道吗

    Java Runnable和Thread实现多线程哪个更好你知道吗

    这篇文章主要为大家详细介绍了Java Runnable和Thread实现多线程哪个更好,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2022-03-03
  • 浅谈关于spring profile的误解

    浅谈关于spring profile的误解

    这篇文章主要介绍了浅谈关于spring profile的误解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JAVA 多线程编程之CountDownLatch使用详解

    JAVA 多线程编程之CountDownLatch使用详解

    当多个线程需要协调和同步执行任务时,Java中的CountDownLatch(倒计时门闩)是一个常用的工具类,本文将介绍 CountDownLatch 的基本原理、用法以及示例代码,需要的朋友可以参考下
    2023-05-05
  • Java如何求交集、并集、差集

    Java如何求交集、并集、差集

    这篇文章主要介绍了Java如何求交集、并集、差集问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 如何利用Jackson序列化忽略指定类型的属性详解

    如何利用Jackson序列化忽略指定类型的属性详解

    这篇文章主要给大家介绍了关于如何利用Jackson序列化忽略指定类型的属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • 详细分析Java并发集合ArrayBlockingQueue的用法

    详细分析Java并发集合ArrayBlockingQueue的用法

    这篇文章主要介绍了详细分析Java并发集合ArrayBlockingQueue的用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04

最新评论