文档介绍:第7章图形用户界面的实现
图形界面作为用户与程序交互的窗口,是软件开发中一项非常重要的工作。
图形用户界面概述
设计和实现图形用户界面时,主要包含两项内容。
(1)创建图形界面中需要的元素,进行相应的布局。
(2)定义界面元素对用户交互事件的响应以及对事件的处理。
Swing与AWT
AWT、Swing作为图形界面的开发包同时存在于同一标准库中,那么二者之间的区别在哪里呢?创建图形界面时如何取舍?
Swing与AWT之间的关系
Swing诞生之前,Java中用来进行图形用户界面开发的工具包为AWT。AWT是“Abstract Window Toolkit”的缩写,又称为“抽象窗体工具包”。
AWT是随早期Java一起发布的GUI工具包,是所有Java版本中都包含的基本GUI工具包,其中不仅提供了基本的控件,并且还提供了丰富的事件处理接口。Swing是继AWT之后Sun推出的又一款GUI工具包。Swing建立在AWT ,也就是说,AWT是Swing大厦的基石。
关于Swing与AWT控件的混用
由于AWT中提供的控件,均依赖本地系统实现,而Swing控件属于轻量级控件,是由纯Java编写的,使用基本图形元素直接在屏幕上绘制,因此在搭建界面时,如果将二者同时使用,就有可能会出现遮挡的现象。
事件处理
当用户与GUI交互时,无论是单击鼠标,还是按下键盘,都会触发相应的事件。
在整个过程中涉及到两个对象:事件源与事件监听器。
事件源是指触发事件的控件,如按钮、窗体、列表、表格等。
不同控件在不同情况下将触发不同的事件,关于事件的信息被封装在事件对象中。
事件的层次结构
前面已经介绍,虽然现在在开发中使用的都是Swing控件,但事件处理模型还是基于AWT 。本小节将介绍AWT ,
所有的事件类都继承自EventObject类,在该类中定义了一个非常有用的getSource()方法,该方法的功能为从事件对象获取触发事件的事件源,为编写事件处理的代码提供方便,该方法的接口如下。
窗体事件
应用中需要使用的其他控件都是直接或间接放在窗体中的。
如果窗体关闭时需要执行自定义的代码,则应该使用事件处理来实现,本小节将结合事件处理模型介绍如何开发处理窗体事件的代码,包括关闭窗体、窗体失去焦点、获得焦点、最小化等情况。
1、。
2、对应此事件有3个不同的事件监听接口:
3、窗体主要有JFrame类实现,提供了几个用于注册窗体事件监听器的方法。见表7-2:
addWindowListener(WindowListener l)
removeWindowListener(WindowListener l)
addWindowStateListener(WindowStateListener l)
removeWindowStateListener(WindowStateListener l)
addWindowFocusListener(WindowFocusListener l)
removeWindowFocusListener(WindowFocusListener l)
鼠标事件
当用户在GUI界面上单击鼠标、拖动鼠标、转动鼠标滚轮时,都会触发相应的鼠标事件。对于鼠标事件,Java提供了MouseWheelEvent类和MouseEvent类表示相应的事件。
MouseWheelEvent事件主要用来处理与鼠标滚轮转动相关的动作,如鼠标滚轮转动的方向和单位数。而MouseEvent事件则反映了事件发生时鼠标的按键、水平x坐标、垂直y坐标以及关联鼠标的单击次数。