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
{