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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值