第11章 AWT編程(四)

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 事件適配器

事件適配器實現了監聽器接口,併爲該接口裏的每個方法都提供了實現。

如果監聽器接口只有一個方法,該監聽器接口就無須提供適配器,如果監聽器接口有多個方法,該監聽器接口都應該有事件適配器。

 


 

給出窗口適配器使用示例:

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();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章