第16讲图形用户界面㈡内容摘要:

绘制一个图形用户界面,但是还没有编写用户交互的代码。 下面来认识一下 Java的事件处理机制。 • 每发生一个事件,程序都需要作出相应的响应,这称为事件处理。 委派事件模型 • 事件处理机制的思想是:可能产生事件的对象(事件源,如窗口,按钮等)收到用户发出的操作指令后产生相应的事件,然后将这些事件分别发送给不同的监听器,由监听器来处理这些事件,并将处理结果返回。 整个过程中,监听器简单的等待,直到它收到一个事件。 这种事件处理机制使得处理事件的应用程序逻辑与生成那些事件的界面逻辑(容器或者组件)彼此分离,相互独立存在。 import .*。 import .*。 class Ex9_13 extends Frame implements ActionListener{ static Ex9_13 frm=new Ex9_13()。 static Button btn=new Button(将窗口变成黄色 )。 public static void main(String args[]){ (frm)。 //把 frm向 btn注册,让 frm监听事件 (new FlowLayout())。 (Action Event)。 (200,150)。 (btn)。 (true)。 } public void actionPerformed(ActionEvent e){ ()。 } } 程序分析: 事件源:也就是事件发生的场所,通常就是各个组件。 如本例的按钮对象。 事件:用户对界面操作在 Java语言上的描述。 它由用户和界面中的组件交换而产生,比如移动鼠标、点击鼠标按钮和按下键盘键等都可以引发事件。 本例中,当按下按钮时,就产生了一个事件 ActionEvent。 监听: Java使用一组接口来实现对事件源的监听。 本例中,为了使 frm窗口对象能够监听按钮触发的事件,让 Ex9_13对象实现事件处理的接口。 自身实现监听器示例 import .*。 import .*。 class Ex9_14{ static Frame frm=new Frame(Action Event)。 static Button btn=new Button(将窗口变成黄色 )。 public static void main(String args[]){ (new ActLis())。 (new FlowLayout())。 (Action Event)。 (200,150)。 (btn)。 (true)。 } //定义内部类 ActLis,并实现 ActionListener接口 static class ActLis implements ActionListener{ public void actionPerformed(ActionEvent e) {//事件发生的处理操作 ()。 } } } 程序分析: 上个例子中,选择了窗口作为监听者。 事实上也可以自定义一个类来实现 ActionListener接口,再把此类产生的对象作为监听。 通常把实现接口的类定义在主类里,自己成为它的内部类。 内部类实现监听器示例 事件处理类 • Java把事件类大致分成两种 : 语义事件 (semantic events)与底层事件 (lowlever events)( 指屏幕上可视化组件的低级输入或窗口系统事件 )。 其中语义事件直接继承自 AWTEvent, 如 ActionEvent、AdjustmentEvent与 ComponentEvent等等 , 底层事件则是继承自 ComponentEvent类 , 如 ContainerEvent、FocusEvent、 WindowEvent与 KeyEvent等等。 • 下表 提供了常用的事件类、事件监听接口与事件监听接口提供的方法。 ActionEvent事件类的处理 • ActionEvent事件对应于组件的主要用途。 点击按钮,选择菜单项目,或向单行文本框输入字符串并敲击 Enter键时,都会发生 ActionEvent事件。 例: Ex9_15 程序分析:点击前面两个按钮,文本框将显示相应的信息,点击退出按钮,程序将结束。 类 Ex9_15继承自 Frame, frm对象是按钮组件的容器。 当按下按钮时,将会发生 ActionEvent类事件,按钮本身不作任何处理,这时候就会把事件向上传递,直到窗口对象 frm监听为止。 当 frm对象监听到按钮事件后,就会运行 ActionListener接口提供的方法 actionPerformed(ActionEvent e)。 由于 ActionEvent类继承自 EventObject类,所以可以使用EventObject类提供的方法 getSource()来查看是哪个对象激活的事件。 TextEvent类。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。