「java控制监听」java监听方法

博主:adminadmin 2022-12-28 17:18:11 64

本篇文章给大家谈谈java控制监听,以及java监听方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java的listener是什么原理

回调,

Java的事件监听机制是这样的:

事件的观察者向事件的发出者进行注册,当事件发生时,事件的发出者调用之前注册的回调函数,将相关事件信息通知到事件的观察者。这个过程中,当然不用事件的观察者进行轮询。

你可能有个问题:那么事件的发出者如何得知事件发生呢?实际上举个例子来说如窗口类,有个窗口关闭事件可以注册,作为窗口类来说内部有相关关闭窗口的方法,只要这些方法被调用,当然就知道窗口被关闭了,只要这些方法在合适的时机调用回调函数即可。

事件的观察者可以没有,有一个或多个,只要再事件的发出者内部维护一个ListXxxListener即可,到时候迭代列表依次发出事件即可。(这里一般不设计为多线程,而是单线程依次发送,所以事件处理函数最好不要阻塞太长时间,否则会影响到下一个观察者,甚至事件发出方代码的调用)

Java 事件处理方法是基于授权事件模型

事件源生成事件并将其发送至一个或多个监听器

监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,然后返回。

事件:在授权事件模型中,事件是一个描述事件源状态改变的对象 。  

通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。 如:按下一个按钮、通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等。

事件源:事件源是一个生成事件的对象

一个事件源可能会生成不同类型的事件

事件源提供了一组方法,用于为事件注册一个或多个监听器。

每种事件的类型都有其自己的注册方法。一般形式为:

public void addEventTypeListener (TypeListener e)

AWT采取的事件控制过程:监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口”

事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。

事件源将在发生事件时向所有注册的监听器发送事件对象。  

监听器对象使用事件对象中的信息来确定它们对事件的响应

事件模型:

1.基于代理(授权)事件模型

事件处理是一个事件源授权到一个或者多个事件监听器。其基本原理是:组件激发事件,事件监听器监听和处理事件,可以调用组件的addEventTypeListener方法向组件注册监听器。把其加入到组件以后,如果组件激发了相应类型的事件,那么定义在监听器中的事件处理方法会被调用。

2.此模型主要由以三种对象为中心组成

事件源       由它来激发产生事件

   是产生或抛出事件的对象。

事件监听器  由它来处理事件

         实现某个特定EventListener 接口,此接口定义了一种或多种方法,事件源调用它们以响应该接口所处理的每一种特定事件类型 。

事件  具体的事件类型

   事件类型封装在以java.util.EventObject为根的类层次中。当事件发生时,事件记录发生的一切事件,并从事件源传播到监听器对象

java中的事件监听是怎样实现随时监听的,是通过线程吗

java中的事件监听不是通过线程实现的,它是通过一种注册--通知机制实现的。在java的设计模式中,有一种模式叫:观察者模式,和这个类似。

举个例子,本例子是一个简单的监听当数据发生变化时要做的操作:

1,我们先定义一个接口,可以让多个监听者实现

2、实现一监听者

3、被监听者

4、main方法里面是监听的应用。这样就可以监听DataManager中的updateData行为了,当有数据发生变化时,就可以即时被监听者收到。

关于java的监听器

1、public void addWindowListener(WindowListener l)添加指定的窗口侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出任何异常,且不执行任何操作。

这个是API中的方法定义,此方法参数为接口WindowListener,任何实现该接口的类都可以作为参数。

2、public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusListener

接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。

扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现

WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为

null,所以只需针对关心的事件定义方法。)

使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener

方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将

WindowEvent 传递给该方法。

3、如果我想在代码中一次性使用某个类(抽象类或具体类)或接口,可以使用匿名类的方式,这样不需自己定义一个My***类,然后再使用,比较方便。用法就是直接在new WindowAdapter()后面加入类定义,在其中实现或覆盖方法就可以了。

匿名类不是返回值,而是相当于new String(“hello”)这种的扩展形式。我觉得匿名类的最多用处就是加监听器时。

附上WindowAdapter源代码:

public abstract class WindowAdapter

    implements WindowListener, WindowStateListener, WindowFocusListener

{

    public void windowOpened(WindowEvent e) {}

    public void windowClosing(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) {}

    public void windowStateChanged(WindowEvent e) {}

    public void windowGainedFocus(WindowEvent e) {}

    public void windowLostFocus(WindowEvent e) {}

}

java 按钮监听

先定义一个监听器al:

ActionListener al = new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

String str = btn1.getText();

field.setText(str);

}

};

然后所有button都调用addActionListener(al);这样al就可以监听所有button的点击事件了.通过e.getSource()获取哪个按钮,然后获取按钮上的数字即可.

java中监听事件怎么设置

javax.Swing实现button的监听有两种方式:

方法一:实现 implements ActionListener接口,然后实现它的抽象方法

public void actionPerformed(ActionEvent e) {

//写点击按钮后发生的操作代码

}

方法二: jButton.addAtionListener(new ActionEvent (){

//写点击按钮后发生的操作代码

});

JAVA中设置键盘事件监听者的方法是什么

方法一:从控制台接收一个字符,然后将其打印出来

import java.io.*;

public static void main(String [] args) throws IOException{ 

         System.out.print("Enter a Char:"); 

         char i = (char) System.in.read(); 

         System.out.println("your char is :"+i); 

虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。

方法二:从控制台接收一个字符串,然后将其打印出来。 在这个题目中,我们需要用到BufferedReader类和InputStreamReader类

import java.io.*;

public static void main(String [] args) throws IOException{ 

           BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

           String str = null; 

           System.out.println("Enter your value:"); 

           str = br.readLine(); 

           System.out.println("your value is :"+str); 

}

这样我们就能获取我们输入的字符串。

方法三:这种方法我认为是最简单,最强大的,就是用Scanner类

import java.util.Scanner;

public static void main(String [] args) { 

         Scanner sc = new Scanner(System.in); 

         System.out.println("请输入你的姓名:"); 

         String name = sc.nextLine(); 

         System.out.println("请输入你的年龄:"); 

         int age = sc.nextInt(); 

         System.out.println("请输入你的工资:"); 

         float salary = sc.nextFloat(); 

         System.out.println("你的信息如下:"); 

         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 

}

关于java控制监听和java监听方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。