2014-07-16 22:16:38|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, 界面设计, Swing|来源:唯设编程网
在程序入口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
{
private static JFrame frame; // 定义为静态变量以便main使用
private static JPanel myPanel; // 该面板用来放置按钮组件
private JButton button1; // 这里定义按钮组件
private JButton button2; // 以便让ActionListener使用
public Simple2() // 构造器, 建立图形界面
{
// 新建面板
myPanel = new JPanel();
// 新建按钮
button1 = new JButton("按钮1"); // 新建按钮1
button2 = new JButton("按钮2");
// 每一个事件源需要一个监听器
// 定义一个匿名内部类来监听事件源产生的事件
button1.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(frame,
"按钮1 被点击");
}
}
);
button2.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(frame,
"按钮2 被点击");
}
}
);
myPanel.add(button1); // 添加按钮到面板
myPanel.add(button2);
}
public static void main(String s[])
{
Simple2 gui = new Simple2(); // 新建Simple2组件
frame = new JFrame("Simple2"); // 新建JFrame
// 处理关闭事件的通常方法
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{System.exit(0);} });
frame.getContentPane().add(myPanel);
frame.pack();
frame.setVisible(true);
}
}