任何支持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);
}
});
}
}