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