您的位置:首页 > 编程语言 > Java开发

Java事件处理

2015-07-12 21:23 519 查看
任何支持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对象就会被告知。

[code]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);
            }
        });
    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: