14 1 java util Event Listener java awt

  • Slides: 30
Download presentation

程序清单 14 -1 java. util. Event. Listener java. awt. event. Action. Listener 点击按钮时,jbtok 对象产生一个

程序清单 14 -1 java. util. Event. Listener java. awt. event. Action. Listener 点击按钮时,jbtok 对象产生一个 Action. Event对象, 并调用监听器对象 listener中的方法

事件类的层次关系 java. lang java. util. java. awt. List. Selection. Event javax. swing. event. java.

事件类的层次关系 java. lang java. util. java. awt. List. Selection. Event javax. swing. event. java. awt. event.

P 371 表 14 -1 用户行为、源对象、事件类型 用户动作 单击按钮 单击复选框 单击单选框 源对象 事件类 JButton Action.

P 371 表 14 -1 用户行为、源对象、事件类型 用户动作 单击按钮 单击复选框 单击单选框 源对象 事件类 JButton Action. Event JCheck. Box Item. Event, Action. Event JRadio. Button Item. Event, Action. Event 在文本框里按回车 选择一个新项目 窗口打开、关闭等 鼠标按下、释放等 键盘按钮、释放等 JText. Field JCombo. Box Window Component Action. Event Item. Event, Action. Event Window. Event Mouse. Event Key. Event

P 372 表 14 -2 事件 Action. Event Item. Event Window. Event 事件、监听器和监听器方法 监听器接口

P 372 表 14 -2 事件 Action. Event Item. Event Window. Event 事件、监听器和监听器方法 监听器接口 Action. Listener Item. Listener Window. Listener Container. Event Container. Listener Mouse. Event Mouse. Listener Mouse. Motion. Listen er Key. Event Key. Listener 监听器方法 action. Performed(Action. Event) item. State. Changed(Item. Event) window. Closing(Window. Event) window. Opened(Window. Event) window. Iconified(Window. Event) window. Deiconified(Window. Event) window. Closed(Window. Event) window. Activated(Window. Event) component. Added(Container. Event) component. Removed(Container. Event) mouse. Pressed(Mouse. Event) mouse. Released(Mouse. Event) mouse. Clicked(Mouse. Event) mouse. Exited(Mouse. Event) mouse. Entered(Mouse. Event) key. Pressed(Key. Event) key. Released(Key. Event) key. Typeed(Key. Event)

模式 1:窗口类自己实现监听接口 import javax. swing. *; import java. awt. event. *; import java. awt.

模式 1:窗口类自己实现监听接口 import javax. swing. *; import java. awt. event. *; import java. awt. *; public class T 14_2 extends JFrame implements Action. Listener{ public void action. Performed(Action. Event e){ System. out. println("It is OK"); } public T 14_2(){ JButton jbt. OK=new JButton("ok"); set. Layout(new Flow. Layout()); add(jbt. OK); jbt. OK. add. Action. Listener(this); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Bounds(200, 100, 300); set. Visible(true); } public static void main(String args[]){ JFrame frame=new T 14_2(); } }

import javax. swing. *; 模式 2:独立的监听器类实现监听接口 import java. awt. event. *; import java. awt.

import javax. swing. *; 模式 2:独立的监听器类实现监听接口 import java. awt. event. *; import java. awt. *; public class T 14_2 extends JFrame { public T 14_2(){ JButton jbt. OK=new JButton("ok"); set. Layout(new Flow. Layout()); add(jbt. OK); Action. Listener listener=new OKListener(); jbt. OK. add. Action. Listener(listener); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Bounds(200, 100, 300); set. Visible(true); } public static void main(String args[]){ JFrame frame=new T 14_2(); } } class OKListener implements Action. Listener{ public void action. Performed(Action. Event e){ System. out. println("It is OK"); } }

监听器类不能被其它应用程序共享, 故,它适合在框架类中定义为内部类 程序清单 14 -2 import javax. swing. *; 模式 3:内部类实现监听接口 import java. awt.

监听器类不能被其它应用程序共享, 故,它适合在框架类中定义为内部类 程序清单 14 -2 import javax. swing. *; 模式 3:内部类实现监听接口 import java. awt. event. *; import java. awt. *; public class T 14_2 extends JFrame { public T 14_2(){ JButton jbt. OK=new JButton("ok"); set. Layout(new Flow. Layout()); add(jbt. OK); Action. Listener listener=new OKListener(); jbt. OK. add. Action. Listener(listener); set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); set. Bounds(200, 100, 300); set. Visible(true); } public static void main(String args[]){ JFrame frame=new T 14_2(); } class OKListener implements Action. Listener{ public void action. Performed(Action. Event e){ System. out. println("It is OK"); } } }

14. 3. 3 举例:处理简单行为的事件 jbt. OK. add. Action. Listener(new Action. Listener(){ public void action.

14. 3. 3 举例:处理简单行为的事件 jbt. OK. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e){ ……; } 程序清单 14 -4 }); jbt. Cancel. add. Action. Listener(new Action. Listener(){ public void action. Performed(Action. Event e){ ……; } });

14. 3. 4 举例:处理窗口事件 程序清单 14 -5 add. Window. Listener(new Window. Listener(){ public void

14. 3. 4 举例:处理窗口事件 程序清单 14 -5 add. Window. Listener(new Window. Listener(){ public void window. Deiconfield(Window. Event e){//窗口还原 ……; } public void window. Iconfield(Window. Event e){//窗口最小化 ……; } }); 一个监听器包含多个具体事件

14. 4 鼠标事件 Mouse. Listener:按,放,点击,移动到,离开 P 381 图 14 -11 Mouse. Motion. Listener:拖动、移动 add.

14. 4 鼠标事件 Mouse. Listener:按,放,点击,移动到,离开 P 381 图 14 -11 Mouse. Motion. Listener:拖动、移动 add. Mouse. Motion. Listener(new Mouse. Motion. Adapter(){ public void mouse. Dragged(Mouse. Event e){ x=e. get. X(); y=y. get. Y(); repaint(); } }); protected void paint. Component(Graphics g){ …… } P 381 -382 程序清单 14 -7

创建一窗口,当鼠标在窗口中点击时,在窗口标题栏中显示点击位置坐标。 方法一:实现Mouse. Listener接口 import java. awt. event. *; //载入Mouse. Listener类所在的包 import javax. swing. *;

创建一窗口,当鼠标在窗口中点击时,在窗口标题栏中显示点击位置坐标。 方法一:实现Mouse. Listener接口 import java. awt. event. *; //载入Mouse. Listener类所在的包 import javax. swing. *; //载入JFrame所在的包 public class E 1 implements Mouse. Listener{ JFrame f; public E 1() { f=new JFrame(); //新建一窗口 f. set. Bounds(200, 300, 150); f. set. Visible(true); f. add. Mouse. Listener(this); //为窗口增加鼠标事件监听器 f. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); } public void mouse. Pressed(Mouse. Event e){ } public void mouse. Released(Mouse. Event e){ } public void mouse. Entered(Mouse. Event e){ } public void mouse. Exited(Mouse. Event e){ } public void mouse. Clicked(Mouse. Event e){ f. set. Title(“点击坐标为 (”+e. get. X()+“, ”+e. get. Y()+”)”); } public static void main(String[] args){ new E 1(); } }

l //继承Mouse. Adapter类 import java. awt. event. *; //载入Mouse. Adapter所在的包 import javax. swing. *;

l //继承Mouse. Adapter类 import java. awt. event. *; //载入Mouse. Adapter所在的包 import javax. swing. *; public class E 2 extends Mouse. Adapter{ JFrame f; public E 2() { f=new JFrame(); f. set. Size(300, 150); f. set. Visible(true); f. add. Mouse. Listener(this); f. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); } public void mouse. Clicked(Mouse. Event e){ f. set. Title("点击坐标为 ("+e. get. X()+", "+e. get. Y()+")"); } public static void main(String[] args){ new E 2(); } }

l //方法三:使用匿名内部类 import java. awt. event. *; import javax. swing. *; public class E

l //方法三:使用匿名内部类 import java. awt. event. *; import javax. swing. *; public class E 3{ JFrame f; public E 3() { f=new JFrame(); f. set. Size(300, 150); f. set. Visible(true); f. add. Mouse. Listener(new Mouse. Adapter(){ public void mouse. Clicked(Mouse. Event e){ f. set. Title("点击坐标为 ("+e. get. X()+", "+e. get. Y()+")"); } }); //为窗口添加鼠标事件监听器语句结束 f. add. Window. Listener(new Window. Adapter(){ public void window. Closing(Window. Event e){ System. exit(0); } }); //为窗口添加窗口事件监听器语句结束 } } public static void main(String[] args){ new E 3(); }

14. 5 键盘事件 P 383 -384 程序清单 14 -8 add. Key. Listener(new Key. Adapter(){

14. 5 键盘事件 P 383 -384 程序清单 14 -8 add. Key. Listener(new Key. Adapter(){ public void key. Pressed(Key. Event e){ switch(e. get. Key. Code()){ } } }); case … : …;

14. 6 使用Timer类的动画(可选) 绝大多数源对象是GUI组件。 javax. swing. Timer例外。并且,它不可见。 其监听器必须是Action. Listener监听器的实例。 class Timer. Listener implements Action.

14. 6 使用Timer类的动画(可选) 绝大多数源对象是GUI组件。 javax. swing. Timer例外。并且,它不可见。 其监听器必须是Action. Listener监听器的实例。 class Timer. Listener implements Action. Listener{ public void action. Performed(Action. Event e){…; } } 主类中 Timer timer=new Timer(1000, new Timer. Listener()); //给定时器建立监听器 或者timer. add. Action. Listener(new Timer. Listener()); //同上 timer. start(); //启动定时器