Java事件处理

任何支持GUI的操作环境都要不断的监视按键或点击鼠标这样的事件,操作环境将这些事件报告给正在运行的应用程序。程序员对相关的特定事件编写代码,并将这些代码放置在过程中,通常人们将它们称之为事件。

在AWT所知的事件范围内,完全可以控制时间从事件源到事件监听器的传递过程,并将任何对象指派给事件监听器。Java将事件的相关信息封装在一个事件对象(Event Object)中。在Java中,所有的事件对象都最终派生于java.util.EventObject类。

AWT事件处理机制的概要:
1:监听器对象是一个实现了特定监听器端口的类的实例。
2:事件源是一个能够注册监听对象并发送事件对象的对象。
3:当事件发生时,事件源将事件对象传递给所有注册的监听器。
4:监听器对象对利用事件对象中的信息决定如何对事件做出响应。

//下面是一个监听器实例
ActionListener listener= …;
JButton button = new JButton(“OK”);
button.addActionListener(listener);
现在只要按钮产生了一个动作事件,listener对象就会被告知。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class ButtonFrame extends JFrame{
    //创建面板
    private JPanel buttonPanel;
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGTH = 200;

    public ButtonFrame(){
        setSize(DEFAULT_WIDTH,DEFAULT_HEIGTH);

        //创建三个按钮对象 也就是事件源
        JButton yellowButton = new JButton("Yellow");
        JButton blueButton = new JButton("Blue");
        JButton redButton = new JButton("Red");

        buttonPanel = new JPanel();

        buttonPanel.add(yellowButton);
        buttonPanel.add(blueButton);
        buttonPanel.add(redButton);

        add(buttonPanel);

        //创建事件监听器
        ColorAction yellowAction = new ColorAction(Color.YELLOW);
        ColorAction blueAction = new ColorAction(Color.BLUE);
        ColorAction redAction = new ColorAction(Color.RED);
        yellowButton.addActionListener(yellowAction);
        blueButton.addActionListener(blueAction);
        redButton.addActionListener(redAction);
    }


    private class ColorAction implements ActionListener{
        private Color backgroundColor;

        private ColorAction(Color c){
            backgroundColor = c;
        }
        //执行的操作
        public void actionPerformed(ActionEvent event){
            buttonPanel.setBackground(backgroundColor);
        }
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        EventQueue.invokeLater(new Runnable(){
            public void run(){
                JFrame frame = new ButtonFrame();
                frame.setTitle("HW");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }

}

你可能感兴趣的:(操作,事件,事件处理)