【JAVA语言程序设计基础篇】--事件驱动程序设计--定义监听器的另一种方式
来源:互联网 发布:斐讯k3端口转发 编辑:程序博客网 时间:2024/05/16 01:38
有很多种方式定义监听类,哪种方式比较好呢?
使用内部类或者匿名内部类定义监听类已经成了事件处理程序设计的标准。
因为他通常都能提供清晰、干净和简洁的代码。
package chapter16;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;@SuppressWarnings("serial")public class DetectSourceDemo extends JFrame{private JButton sNew = new JButton ("Process New");private JButton sOpen = new JButton ("Process Open");private JButton sSave = new JButton ("Process Save");private JButton sPrint = new JButton ("Process Print");public DetectSourceDemo(){setLayout(new FlowLayout());add(sNew);add(sOpen);add(sSave);add(sPrint);sNew.addActionListener(new ButtonListener());sOpen.addActionListener(new ButtonListener());sSave.addActionListener(new ButtonListener());sPrint.addActionListener(new ButtonListener());}public static void main(String[] args) {JFrame frame = new DetectSourceDemo();frame.setTitle("Test");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);frame.pack();frame.setVisible(true);}class ButtonListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==sNew){System.out.println("new");}else if(e.getSource()==sOpen){System.out.println("open");}else if(e.getSource()==sSave){System.out.println("save");}else {System.out.println("print");}}}}
/** * 这种方法不是很好,因为将太多的责任放在了一个类中,最好能设计一个监听类 ,只负责处理事件,这种设计会让代码易于阅读和维护 */package chapter16;import javax.swing.*;import java.awt.event.*;@SuppressWarnings("serial")public class FrameAsListenerDemo extends JFrame implements ActionListener { // Create four buttons private JButton jbtNew = new JButton("New"); private JButton jbtOpen = new JButton("Open"); private JButton jbtSave = new JButton("Save"); private JButton jbtPrint = new JButton("Print"); public FrameAsListenerDemo() { // Create a panel to hold buttons JPanel panel = new JPanel(); panel.add(jbtNew); panel.add(jbtOpen); panel.add(jbtSave); panel.add(jbtPrint); add(panel); // Register listener with buttons jbtNew.addActionListener(this); jbtOpen.addActionListener(this); jbtSave.addActionListener(this); jbtPrint.addActionListener(this); } /** Implement actionPerformed */ public void actionPerformed(ActionEvent e) { if (e.getSource() == jbtNew) System.out.println("Process New"); else if (e.getSource() == jbtOpen) System.out.println("Process Open"); else if (e.getSource() == jbtSave) System.out.println("Process Save"); else if (e.getSource() == jbtPrint) System.out.println("Process Print"); } /** Main method */ public static void main(String[] args) { JFrame frame = new FrameAsListenerDemo(); frame.setTitle("FrameAsListenerDemo"); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); }}
0 0
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--定义监听器的另一种方式
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--匿名类监听器
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--匿名类监听器
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--了解监听器、注册以及处理事件
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--鼠标事件
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--键盘事件
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--键盘事件
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--窗口事件
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--贷款计算器
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--setActionCommand()
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--几个问题
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--Timer类的动画
- java基础学习——事件处理机制-事件监听器的实现方式
- [Java]事件驱动程序设计
- Java事件处理机制-事件监听器的实现方式
- Java事件处理机制-事件监听器的实现方式
- Java事件处理机制-事件监听器的实现方式
- 《java语言程序设计基础篇》
- poj 1336 The K-League (网络流)
- 监控线上错误日志
- 推荐一些css reset
- handler.post方法的终极最直观的理解与解释
- 8月11日 集训测试
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--定义监听器的另一种方式
- DELPHI存取JPEG、BMP图像到数据库完整解决方案
- 选项卡(JTabbedPane)的定义
- hover一个组件,另一个组件css效果
- 转运维的兄弟分享一案例
- 浅谈Java中的hashcode方法
- odom_out_and_back.cpp
- ASP.NET中MD5和SHA1加密的几种方法
- CodeForces 680A Bear and Five Cards(取数字)