我的java学习之事件监听篇01
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 import java.io.*; 5 6 public class ImageViewerDemo 7 { 8 public static void main(String [] args) { 9 JFrame frame = new ImageViewerFrame(); 10 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 11 frame.setVisible(true); 12 } 13 } 14 15 class ImageViewerFrame extends JFrame 16 { 17 public ImageViewerFrame() { 18 this.setTitle("ImageViewer Frame"); 19 this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); 20 21 // 创建组件 22 JMenuBar menuBar = new JMenuBar(); 23 this.setJMenuBar(menuBar); //注意若直接加载会占整个窗体 24 25 JMenu menu = new JMenu("File"); 26 menuBar.add(menu); 27 28 JMenuItem menuOpen = new JMenuItem("open"); //菜单分栏 29 menu.add(menuOpen); 30 31 //设置文件选择器默认目录为当前 32 chooser = new JFileChooser(); 33 chooser.setCurrentDirectory(new File(".")); 34 35 // label标签用于显示图片文件信息 36 label = new JLabel(); 37 this.add(label); 38 39 // 添加事件 文件选择事件 40 menuOpen.addActionListener( new ActionListener() 41 { 42 public void actionPerformed(ActionEvent e) { 43 //参见API示例用法 44 int returnVal = chooser.showOpenDialog(null); 45 46 //如果选中文件 则以图片形式选中 47 if(returnVal == JFileChooser.APPROVE_OPTION) { 48 String name = chooser.getSelectedFile().getPath(); 49 label.setIcon(new ImageIcon(name)); 50 } 51 } 52 } 53 54 ); 55 56 JMenuItem menuExit = new JMenuItem("exit"); 57 menu.add(menuExit); 58 menuExit.addActionListener( new ActionListener() 59 { 60 public void actionPerformed(ActionEvent e) { 61 System.exit(0); 62 } 63 } 64 ); 65 } 66 67 private JLabel label; 68 private JFileChooser chooser; 69 private static final int DEFAULT_WIDTH = 300; //设置默认宽度 70 private static final int DEFAULT_HEIGHT = 400; 71 }
这是ImageViewer 参见core in java 卷一第二节 用于阅读看图的小程序
在代码里 用菜单条用的是 setlMenuBar(menuBar); 而不是直接add()
给菜单项添加事件监听时候使用匿名内部类处理
直接写处理情况
Xx.addXXListener( new XXAction() {} );
接口的具体实现就搁这里头写着 同时匿名内部类访问的变量为成员变量(局部变量为final)
事件源对象. 方法(监听器 ) => 意思是 某组件调用某组件的监听方法
如 按钮调用按钮的监听方法addActionListener() 那里头咋写呢,写某对象呗,对象有啥特征呢,啥都往里头写有啥用呢, 监听呗,得具有监听器的特征,
那我哪知道那个对象有监听器的特征,OK, 不用找,java给你接听器的接口你去是实现就是,他给你这一套,你按他的来,错不了,就这样。。。
提前做好预备工作,当某件事情发生做出相应的处理, 搁java里叫适配器模式
事发生了,做处理的人咋知道呢,呵呵告诉他呗,没那主动,得你监听,有事你才知道。。。注册事件
浙公网安备 33010602011771号