ch08.Java GUI设计与事件处理-2
- 格式:ppt
- 大小:2.94 MB
- 文档页数:29


GUI图形界⾯编程之事件处理机制事件处理机制三要素:事件源:能够产⽣事件的组件事件:⽤户对组件的⼀个操作事件监听器:接收事件、解释事件并处理⽤户交互的⽅法处理事件源发⽣的事件事件处理机制:当组件(⽐如 Button)被点击时就会产⽣ActionEvent事件,事件被传递给⼀个 ActionListener 对象,再由ActionListener 定义的⽅法来响应处理事件(⾃动调⽤ActionEvent)当事件发⽣后,将某事件的对象传递给事件监听器(事件监听器实现了发⽣此事件所对应的接⼝),事件监听器会处理此事件,为了监视此事件,事件的处理⽅要先向发⽣⽅注册事件有很多种,监听事件所实现的接⼝也有很多种。
监听哪件事,就必须实现此事件的接⼝。
事件与监听事件的接⼝⼀⼀对应按钮事件处理机制:按钮事件(ActionEvent):组件的特定动作(⽐如被按下)发⽣时,由组件(⽐如Button)⽣成此⾼级别事件要使⽤键盘在Button上触发ActionEvent,请使⽤空格键监听器接⼝:ActionListener⼀个监听器监听⼀个事件源对象import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/****程序功能:*时间:* @author Administrator*/public class Test1 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//创建⾯板及按钮Frame f=new Frame();Button b=new Button();f.add(b,BorderLayout.NORTH);f.setVisible(true);f.setResizable(true);f.pack();//创建监听器Monitor bh=new Monitor();//事件注册:表⽰监听器bh监听对象b,当事件发⽣后,调⽤接⼝中的⽅法b.addActionListener(bh);}}class Monitor implements ActionListener{//当事件触发时执⾏此⽅法//当事件发⽣后,把此事件具体信息封装成对象传递给此函数的参数epublic void actionPerformed(ActionEvent e){System.out.println("Press\n");}1个监听器监听多个事件源对象import java.awt.BorderLayout;import java.awt.Button;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/****程序功能:*时间:* @author Administrator*/public class Test1 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//创建⾯板及按钮Frame f=new Frame();Button b1=new Button();Button b2=new Button();f.add(b1,BorderLayout.NORTH);f.add(b2,BorderLayout.CENTER);f.setVisible(true);f.setResizable(true);f.pack();//创建监听器Monitor bh=new Monitor();//事件注册:表⽰监听器bh监听对象b,当事件发⽣后,调⽤接⼝中的⽅法b1.addActionListener(bh);b2.addActionListener(bh);//重设提⽰b2.setActionCommand("Stop");}}class Monitor implements ActionListener{//当事件触发时执⾏此⽅法//当事件发⽣后,把此事件具体信息封装成对象传递给此函数的参数epublic void actionPerformed(ActionEvent e){System.out.println("Press\n"+e.getActionCommand());}}TextField 对象可能发⽣Action(光标在⽂本框中敲回车)事件,与该事件对应的事件类是java.awt.event.ActionEvent. java.awt.event.ActionListener接⼝处理ActionEvent事件创建⽂本框并实现⽂本框输⼊显⽰到命令⾏中⽂本框输⼊内容不可见import java.awt.Frame;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubnew TextFieldDemo();}class TestFieldDemo extends Frame {TestField tf=null;Monitor2 m=null;TestFieldDemo(){//创建⾯板tf=new TestField();this.add(tf);this.setVisible(true);this.pack();//设置此⽂本字段的回显字符(⽤于输⼊密码)tf.setEchoChar('*');//创建监听器m=new Monitor2();//注册tf.addActionListener(m);}}class Monitor2 implements ActionListener{public void actionPerformed(ActionEvent e){TextField tf=(TextField)e.getSource();System.out.println(tf.getText());tf.setText("");}}内部类:可以⽅便的访问包装类的成员变量或成员⽅法。