📜  Java事件处理-Event和Listerner

📅  最后修改于: 2020-09-28 04:43:40             🧑  作者: Mango

事件和侦听器(Java事件处理)

更改对象的状态称为事件。例如,单击按钮,拖动鼠标等。java.awt.event包提供了许多事件类和用于事件处理的Listener接口。

Java事件类和侦听器接口

Event Classes Listener Interfaces
ActionEvent ActionListener
MouseEvent MouseListener and MouseMotionListener
MouseWheelEvent MouseWheelListener
KeyEvent KeyListener
ItemEvent ItemListener
TextEvent TextListener
AdjustmentEvent AdjustmentListener
WindowEvent WindowListener
ComponentEvent ComponentListener
ContainerEvent ContainerListener
FocusEvent FocusListener

执行事件处理的步骤

需要执行以下步骤来执行事件处理:

  • 向侦听器注册组件

报名方法

为了向监听器注册组件,许多类提供了注册方法。例如:

  • 纽扣
    • 公共无效addActionListener(ActionListener a){}
  • 菜单项
    • 公共无效addActionListener(ActionListener a){}
  • 文本域
    • 公共无效addActionListener(ActionListener a){}
    • 公共无效的addTextListener(TextListener a){}
  • 文字区域
    • 公共无效的addTextListener(TextListener a){}
  • 选框
    • 公共无效addItemListener(ItemListener a){}
  • 选择
    • 公共无效addItemListener(ItemListener a){}
  • 清单
    • 公共无效addActionListener(ActionListener a){}
    • 公共无效addItemListener(ItemListener a){}

Java事件处理代码

我们可以将事件处理代码放入以下位置之一:

  • 班内
  • 其他班
  • 匿名班

通过实现ActionListener进行Java事件处理

import java.awt.*;
import java.awt.event.*;
class AEvent extends Frame implements ActionListener{
TextField tf;
AEvent(){

//create components
tf=new TextField();
tf.setBounds(60,50,170,20);
Button b=new Button("click me");
b.setBounds(100,120,80,30);

//register listener
b.addActionListener(this);//passing current instance

//add components and set size, layout and visibility
add(b);add(tf);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
tf.setText("Welcome");
}
public static void main(String args[]){
new AEvent();
}
}

public void setBounds(int xaxis,int yaxis,int width,int height);在上面的示例中使用了,用于设置组件的位置,它可以是按钮,文本字段等。

2)通过外部类处理Java事件

import java.awt.*;
import java.awt.event.*;
class AEvent2 extends Frame{
TextField tf;
AEvent2(){
//create components
tf=new TextField();
tf.setBounds(60,50,170,20);
Button b=new Button("click me");
b.setBounds(100,120,80,30);
//register listener
Outer o=new Outer(this);
b.addActionListener(o);//passing outer class instance
//add components and set size, layout and visibility
add(b);add(tf);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public static void main(String args[]){
new AEvent2();
}
}
import java.awt.event.*;
class Outer implements ActionListener{
AEvent2 obj;
Outer(AEvent2 obj){
this.obj=obj;
}
public void actionPerformed(ActionEvent e){
obj.tf.setText("welcome");
}
}

3)通过匿名类处理Java事件

import java.awt.*;
import java.awt.event.*;
class AEvent3 extends Frame{
TextField tf;
AEvent3(){
tf=new TextField();
tf.setBounds(60,50,170,20);
Button b=new Button("click me");
b.setBounds(50,120,80,30);

b.addActionListener(new ActionListener(){
public void actionPerformed(){
tf.setText("hello");
}
});
add(b);add(tf);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public static void main(String args[]){
new AEvent3();
}
}