11.5事件处理

11.5.1 java事件处理流程

在事件处理的过程中,主要涉及3类对象;

1.Event Source (事件源):事件发生的场所,通常就是各个组件.

2.Event (事件):事件封闭了GUI组件上发生的特定事情,通常就是用户对组件的一次操作.

3.Event Listener (事件监听器):负责监听事件源所发生的事件,并对各种事件做出响应处理.

使用示例:

import java.awt.*;
import java.awt.event.*;
public class EventQs
{
    private Frame f = new Frame("测试事件");
    private Button ok = new Button("确定");
    private TextField tf = new TextField(30);
    public void init()
    {
      

        //注册事件监听器
        ok.addActionListener(new OkListener());  //OK按钮的监听类OkListener
       

        f.add(tf);
        f.add(ok , BorderLayout.SOUTH);
        f.pack();
        f.setVisible(true);
    }


    //定义事件监听器类
   class OkListener implements ActionListener
    {
        //下面定义的方法就是事件处理器,用于响应特定的事件
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("用户单击了ok按钮");
            tf.setText("Hello World");
        }
    }
   

     public static void main(String[] args)
    {
        new EventQs().init();
    }
}

 

11.5.2事件和事件监听器

AWT事件分为低级事件和高级事件.

 

低级事件

低级事件指基于特定动作的事件.如,鼠标的进入、点击拖放等动作。

1.ComponentEvent:组件事件,当组件尺寸、位置、显示、隐藏、发生变化时的事件。

2.ContainerEvent:容器事件,当容器发添加组件,删除组件时的事件。

3.WindowEvent:窗口事件,当窗口状态发生变化时的事件。

4.FocusEvent:焦点事件,当组件得到和失去焦点时的事件。

5.KeyEvent:键盘事件,当键盘按下、松开、单击的事件。

6.MouseEvent:鼠标事件,当鼠标按下、松开、单击、移动的事件。

7.PaintEvent:组件绘制事件。

 

高级事件

1.ActionEvent:动作事件,当按钮、菜单被点击,文本框中按回车。

2.AdjustmentEvent:调节带伤,在滑动条上移动滑块时触发。

3.ItemEvent:选项事件,当用户选中某项和取消某项时触发。

4.TestEvent:文本事件,当文本框里文本发生变化时触发。

 

11.5.3 事件适配器

事件适配器实现了监听器接口,并为该接口里的每个方法都提供了实现。

如果监听器接口只有一个方法,该监听器接口就无须提供适配器,如果监听器接口有多个方法,该监听器接口都应该有事件适配器。

 

第11章 AWT编程(四)_组件


 

给出窗口适配器使用示例:

import java.awt.*;
import java.awt.event.*;

public class TestWindowAdapter
{
    private Frame f = new Frame("测试");
    private TextArea ta = new TextArea(6 , 40);
    public void init()
    {
        f.addWindowListener(new MyListener());
        f.add(ta);
        f.pack();
        f.setVisible(true);
    }
   class MyListener extends WindowAdapter
    {
        public void windowClosing(WindowEvent e)
        {
            ta.append("用户试图关闭窗口!\n");
            System.exit(0);
        }
    }
    public static void main(String[] args)
    {
        new TestWindowAdapter().init();
    }
}