v Border Factory Border border Border Factory create
边界 v � 建� 界需要� 用Border. Factory的静� 方法。 Border border = Border. Factory. create. Empty. Border(); v � 建所需的� 界后,把� 界� 象添加到� 件中。 Panel 1. set. Border(border); v 当需要�� 界增加�� 以提示� ,可以使用Border. Factory 的create. Titled. Border方法: //初始化��� 的空� 界。 Border border = Border. Factory. create. Empty. Border(); Border titled = Border. Factory. create. Titled. Border (border, "Border types");
边界的实例 import javax. swing. *; import javax. swing. border. *; class border. E { public static void main(String[] args) { JPanel p 1=new JPanel(); Border border=Border. Factory. create. Lowered. Bevel. Border(); Border border. Titled= Border. Factory. create. Titled. Border(border, "打印范围"); p 1. set. Border(border. Titled); JFrame f=new JFrame(); f. add(p 1); f. set. Size(200, 200); f. set. Visible(true); } }
事件处理过程 AWT、S WING Action. Event e 事件对象 事件源 监听器注 册 监听器接口 class Button. Listener implements Action. Listener { public void action. Performed( /** } } 按钮事件所进行的具体 作 ) { **/
事件类 – AWT:事件类包含在java. awt. event中 – Swing:事件类包含在javax. swing. event中 – java. util. Event. Object类是所有事件类的父类
事件监听器接口 – Java语言中没有提供专门的事件监听器类,而是提供包 含事件处理方法的监听器接口 – 针对不同的事件类,提供了不同的事件监听器接口 • 例如:与键盘事件Key. Event对应的监听器接口为:Key. Listener public interface Key. Listener extends Event. Listener { public void key. Pressed(Key. Event ev); public void key. Released(Key. Event ev); public void key. Typed(Key. Event ev); }
“事件源-监听器-抽象方法”对应 事件类型 监听器名称 Action. Event Action. Listener Key. Event (键盘事件) Key. Listener (键盘监听器) action. Performed(Action. Event) 按 下 key. Pressed(key. Event) 释 放 key. Released(key. Event) 按+放 key. Typed(key. Event) Mouse. Motion. Listener 移 动 mouse. Moved(Mouse. Event) (鼠标移动监听器) 拖 动 mouse. Dragged(Mouse. Event) 按 下 mouse. Pressed(mouse. Event) Mouse. Event (鼠标事件) 抽象方法 (必须实现) Mouse. Listener (鼠标按键监听器) 释 放 mouse. Released(mouse. Event) 进 入 mouse. Entered(mouse. Event) 退 出 mouse. Exited(mouse. Event) . .
事件模型组件 • 例:定义Key. Event监听器类 public class 监听器类名 implements Key. Listener { public void key. Pressed(Key. Event ev) { System. out. println(“�� 被按下!”); } public void key. Released(Key. Event ev) { } public void key. Typed(Key. Event ev) { } }
按钮事件处理示例 import javax. swing. *; import java. awt. event. *; public class My. Frame extends JFrame implements Action. Listener{ JButton btn. OK, btn. Cancel; JLabel lab; My. Frame(String s){ super(s); set. Size(200, 200); this. set. Location. Relative. To(null); JPanel pan = new JPanel(); set. Content. Pane(pan); btn. OK = new JButton("OK"); btn. OK. add. Action. Listener(this); btn. Cancel = new JButton("Cancel"); btn. Cancel. add. Action. Listener(this); lab = new JLabel(" "); pan. add(btn. OK); pan. add(btn. Cancel); pan. add(lab); this. set. Default. Close. Operation(JFrame. DISPOSE_ON_CLOSE); set. Visible( true ); } public void action. Performed(Action. Event e){ if(e. get. Source()==btn. OK) lab. set. Text("点击了确定按钮"); if(e. get. Action. Command(). equals("Cancel")) lab. set. Text("点击了取消按钮"); } } 43
事件处理例1. 代码 监 听 器 类 设 计 自 己 的 窗 体 类 主 类 1. 2. 3. 4. 5. 6. 7. 8. 9. 1. 2. 3. 4. 5. 6. 7. 8. 9. import java. awt. *; import java. awt. event. *; class Button. Listener implements Action. Listener { public void action. Performed ( Action. Event e ) { System. out. println ( “我知道你按下按钮啦“ ); } } class my. Button. Frame extends Frame { Button btn; my. Button. Frame(String s) { //构造函数 super(s); 按钮 this. set. Size(200, 120); 监听器 按钮 窗体 主类 事件 源 /* 创建按钮*/ btn = new Button("点击"); this. add(btn); 注册 �听 // 事件监听器创建和注册 器 Button. Listener bl = new Button. Listener(); btn. add. Action. Listener(bl); } } 19. public class Action. Event. Test { // 主类 20. public static void main(String args[]){ 21. my. Button. Frame frm = new my. Button. Frame("Action. Event. Test"); 22. 23. 24. frm. show(); } } // 显示窗体
- Slides: 56