background image

 
JOptionPane.showMessageDialog(frame,
 "Unknown event" ;
 }
 }
 

public

 

static

 void main(String s[])

 {
 Simple1 gui = 

new

 Simple1(); 

// 新建 Simple1 组件

 
 frame = 

new

 JFrame("Simple1"); 

// 新建 JFrame

 

// 处理关闭事件的通常方法

 
 frame.addWindowListener(

new

 WindowAdapter() {

 

public

 void windowClosing(WindowEvent e)

 {System.

exit

(0);} });

 frame.getContentPane().add(myPanel);
 frame.pack();
 frame.setVisible(true);
 }
 }
 
 让我们来看看以上代码是如何工作的。在 main 方法中,我们定义了一个 JFrame,然后
将面板 Jpanel 添加到窗体中,该面板包括两个按钮。相应的变量 Frame,button1,button2 定
义在程序的开头部分。
 在程序入口 main 方法中,首先新建 Simple1 组件,通过构造器建立用户 GUI,定义一
个面板 Jpanle,,增加两个按钮,然后利用 JButton.addActionListerner 将两个按钮加入到一
个活动监听器 SimpleLister 中,最后,两个按钮添加到面板。当 GUI 建立后,我们将面板
添加到窗体并显示结果。当用户点击按钮时,程序调用 actionPerformed 方法,通过

if

语句

来判断是哪一个按钮被点击,然后在对话框中显示相应的内容。
 利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的

if

 语句来实

现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。
 通过使用匿名内部类可以解决上述存在的问题。使用简单的匿名内部类作为
addActionListener 的变量即可。以下是实现代码:
 

/*

 * Simple2.java - 处理事件的第二种方法
 * 在这个例子中,利用匿名内部类来监听每一个事件源产生的事件
 * 避免使用一些 if 语句来决定是哪个事件源
 */

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 

public

 

class

 Simple2

 {