Java图形用户界面设计_第1页
Java图形用户界面设计_第2页
Java图形用户界面设计_第3页
Java图形用户界面设计_第4页
Java图形用户界面设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第五章第五章 JavaJava图形用户界面设计图形用户界面设计5 51 Java1 Java图形用户界面计概述图形用户界面计概述5 52 Java2 Java事件处理机制事件处理机制5 53 3 使用使用AWTAWT组件库设计图形界面组件库设计图形界面5 54 4 使用使用SwingSwing组件库设计图形界面组件库设计图形界面5 55 GUI5 GUI设计实例设计实例25 51 Java1 Java图形用户界面设计概述图形用户界面设计概述基于控制台(命令行)的,程序的输出比较简陋,用户基本没有运行程序的直观体验,程序的运行结果只能通过Console窗口或命令行窗口查看,非专业人士难以对应用

2、程序进行准确的运行和操作。基于图形界面的应用程序更为简单和直观,用户使用的体验感更好,操作更加方便快捷。基于图形界面的应用程序已经成为行业内开发的主流模式,这种方式给用户提供了更为直接的体验和更为便捷的操作,相应的,也增加了程序设计人员开发的难度。3图形用户界面,也即Graphics User Interface(简称GUI),就是通过应用程序,向用户提供图形化的操作界面,包括窗口、按钮、菜单、工具栏等各种图形元素,使得用户可以通过点击鼠标或敲击键盘的方式,对应用程序进行操作。5.1.1 Java图形界面设计概述从JDK1.0版本开始,Java为图形界面的开发提供了一套基本的GUI设计类库,称

3、为抽象窗口工具集合(Abstract Window Toolkit,简称AWT),但是这套类库的功能较弱,界面也较为丑陋。4后来,Java推出一套全新的GUI设计类库,称为Swing,与AWT组件库相比,Swing的界面更为美观,功能也更为强大。Swing组件库摒弃了AWT中的一部分过时组件,新增了一部分组件,但是使用的事件处理机制,仍然是与AWT组件库一致的。由于AWT组件库是基于本地方法的C/C+程序,而Swing组件库则是完全使用Java代码实现的,因此基于AWT的应用程序运行速度要快于基于Swing的应用程序。5GUI设计的工作,概括起来,主要包括三个方面。第一,组件的外观(表象)设计

4、,也就是组件本身的容貌设计。第二,组件之间的布局设计,也就是各组件之间的相对位置和距离的设计。第三,组件的功能设计,也就是说,当组件产生某种动作以后,能够完成什么样的功能。6前两种设计,可称之为美工设计,而组件的功能设计,则属于程序开发人员的工作。5.1.2 简单的GUI程序举例AWTExample.javaSwingExample.java7一般说来,Swing组件库中的组件,在名称开头会有一个大写字母J。AWT组件库中的组件,很多在Swing组件库中均能找到对应的版本,例如Button对应于JButton,TextField对应于JTextField,Frame对应于JFrame等。对于同

5、类型的组件而言,Swing组件的功能更强大,外观也更漂亮。Java在向容器中添加组件的时候,有一套专门的布局管理器。8以上两个例子中使用的是FlowLayout布局管理方式,这也是最简单的一种布局管理,称为流式布局方式,按照从左到右,从上到下的顺序,依次将组件添加到容器中,程序中,先加入容器的组件,会显示在容器的左侧和上侧,后加入的组件,会显示在容器的右侧和下侧。不在程序中显式的申明容器的布局管理方式的话,Frame和JFrame默认不使用布局,所以,组件会按照先后顺序逐个的向窗口上添加,最后添加的组件,会将其它事先已经添加的组件覆盖,从而只能显示最后添加的组件,之前添加的组件,因为被遮挡的原

6、因,就无法显示在界面之上。95.1.3 组件的分类按照组件在GUI界面中扮演的角色,可以将组件分为两种类型:容器(Container)和基本组件(Component)。容器就是可以包含其它组件的组件。基本组件就是不能包含其它组件的组件。在一个GUI界面中,通常基本组件的数量要大于容器的数量。105 52 Java2 Java事件处理机制事件处理机制在5.1.2节中举例的两个程序,均可以实现一些简单的操作,如窗口最大化、最小化、窗口拖拽等。AWTExample.java在运行后,即使点击窗口的关闭按钮,窗口也无法实现关闭的功能。SwingExample.java在运行后,点击窗口关闭按钮,虽然可

7、以直接关闭窗口,但在Eclipse的Console窗口中, 标记仍然存在,这表示程序依然处于运行状态,没有退出。11在Java的GUI设计中,各组件(无论是AWT还是Swing)主要负责的是自身外观和属性的设计。组件何时产生何种动作,以及对这些动作会有何种响应,却并不由组件本身来完成。发现组件产生动作,以及对这个动作的响应,Java统一交给事件监听器(Listener)或者适配器(Adapter)处理。125.2.1 事件处理机制中的要素(1) 事件(Event)对一个组件的某种同类型操作动作的集合。Java按照事件产生的方式,将事件归类汇总后,分为若干种类型,例如,鼠标事件、键盘事件、窗口事

8、件、选择事件等。13(2) 事件源(Event Source)产生事件的源头,也即发生事件的组件。例如,点击一次按钮,则按钮就是一个事件源,对应的事件为鼠标事件;在文本框中输入一个字符串,则文本框也是一个事件源,对应的事件为键盘事件。14(3) 事件监听器(Listener)事件处理机制中的核心部分,主要的功能大致可以分为两部分:第一,监听组件,观察组件有没有发生某类事件;第二,如果监听的组件发生了某类事件,则调用对应的动作处理方法立刻处理这个事件。在Java事件处理机制中,监听器处于主体地位。与事件分类对应,监听器也相应的分成若干种类型,例如,鼠标事件对应鼠标监听器,键盘事件对应键盘监听器,

9、窗口事件对应窗口监听器等。15如果我们希望监听并处理一个组件的某类事件,则必须先给该组件添加对应的事件监听器,不给组件添加事件监听器的话,该组件发生任何的事件,都不会被监听器监听到,从而也不会产生任何的响应。监听器属于接口类型,实现某一种监听器,就必须实现该监听器的所有方法。16(4) 事件适配器(Adapter)可以认为是一个简化版的监听器。监听器是对一类事件可能产生的所有动作进行监听,而在具体程序设计时,其实往往只需要监听某类事件中的一个动作即可,这个时候,就可以使用事件适配器。175.2.2 Java中常用的事件类和事件监听器Java中,经常使用的事件处理机制的事件共有10种(这里仅介绍

10、常用的10种,其实共有16种),并分为高级事件(语义事件)和低级事件两大类型。高级事件包括ActionEvent、AdjustmentEvent、ItemEvent、TextEvent四种。低级事件包括ComponetEvent、ContainerEvent、WindowEvent、FocusEvent、KeyEvent、MouseEvent六种。18具体的事件类、对应的事件监听器、对应的动作处理方法以及方法的激发时机,见教材中表5.1所示,其中,阴影部分表示高级事件。192021AWTFrameClose.javaAWTFrameCloseByAdapter.javaSwingFrameCl

11、ose.java尝试一下,MouseMotionListener和MouseWheelListener怎么用?225 53 3 使用使用AWTAWT组件库设计图形界面组件库设计图形界面5.3.1 AWT组件库的常用组件(1) FrameFrame是矩形窗口,默认不可见,须在程序中显式调用setVisible(true)方法设置为可见,否则即使程序运行也看不到窗口显示。销毁Frame窗口,调用dispose方法即可,此时Frame及其承载的所有组件均从屏幕和内存中销毁。(2) ButtonButton表示按钮组件,是一个矩形的供鼠标点击的实体。23(3) Checkbox和CheckboxGro

12、upCheckbox表示复选框组件,如果将多个Checkbox组件放在一个CheckboxGroup中时,这些Checkbox组件将不再具有复选功能,而是只具有单选功能,也即变成单选框。(4) ChoiceChoice表示下拉选择框组件,选择框中的每一个选项称为一个Item,Item的类型一般为String字符串。(5) LabelLabel表示标签组件,主要作用在于创建提示性的文本。24(6) MenuBar、Menu和MenuItemMenuBar表示菜单条组件,该组件由Menu菜单构成,而Menu菜单又可由Menu菜单和MenuItem菜单项构成。(7) TextFieldTextFie

13、ld表示文本框组件,与文本域组件不同的是,文本框中只能有一行文本。(8) TextAreaTextArea表示文本域组件,可以容纳多行文本。25(9) ScrollPaneScrollPane表示滚动条组件,包括水平滚动条和垂直滚动条两个方向,属于容器组件。该组件一般用于容纳一个TextArea组件。(10) PanelPanel表示面板组件,属于容器组件。该组件不能单独存在,必须放置于某一个更高级的容器当中。Panel的作用一般用于组件的布局设计。265.3.2 AWT组件库常用组件举例【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、btn_2、btn_3。当使用鼠标点击btn

14、_1时,文本框显示btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗口f的关闭按钮时,窗口关闭,程序退出。Question_1.java27【问题2】 在【问题1】中,相关的动作操作是通过适配器完成的,如果改用监听器完成,代码应该进行怎样的修改?【问题3】 在【问题1,2】中,都是采用鼠标监听器完成的动作监听和操作,如果改用其它监听器完成,代码应该进行怎样的修改?Question_2.javaQuestion_3.java28【问题4】 在【问题1,2,3】中,引入对话框的概念,当点击Button three或者窗口关闭按钮

15、时,弹出一个对话框加以确认或取消,代码应该进行怎样的修改?Question_4.java29相对AWT组件库而言,Swing组件库更加出色,功能更为强大,界面更为美观,但是,由于纯粹通过Java语言编写,在速度上相对于AWT组件库而言略显缓慢。5.4.1 Swing组件库的常用组件一般说来,大多数的AWT组件在Swing中都能找到对应的组件,且Swing中的组件,一般会以大写字母J开头。5 54 4 使用使用SwingSwing组件库设计图形界面组件库设计图形界面30(1) JFrameJFrame对应AWT的Frame。JFrame简化了窗口关闭操作,只要在程序中显式调用setDefault

16、CloseOperation(JFrame.EXIT_ON_CLOSE),即可完成窗口关闭操作,无需再另行绑定监听器完成。(2) JButtonJButton对应于AWT中的Button,JButton支持图标。31(3) JRadioButton和ButtonGroup在Swing中与Checkbox对应的是JCheckBox,实际使用时,如果需要创建单选框组的话,经常使用的是JRadioButton而非JCheckBox。如果将多个JRadioButton组件放在一个ButtonGroup中时,这些JRadioButton组件将不再具有复选功能,而是只具有单选功能,也即变成单选框。(4)

17、JComboBoxJcomboBox对应于AWT中的Choice,表示下拉选择框组件,选择框中的每一个选项称为一个Item,Item的类型一般为String字符串,也可以是指定的泛型类型。32(5) JLabelJlabel对应于AWT中的Label,表示标签组件,主要作用在于创建提示性的文本。(6) JMenuBar、JMenu和JMenuItem分别对应于AWT的MenuBar、Menu和MenuItem。JMenuBar表示菜单条组件,该组件由JMenu菜单构成,而JMenu菜单又是由JMenu菜单或JMenuItem菜单项构成的。(7) JTextField对应于AWT中的TextField,表示文本框组件,与文本域组件不同的是,文本框中只能有一行文本。33(8) JTextArea对应AWT的TextArea,表示文本域组件,可容纳多行文本。(9) JScrollPane对应AWT的ScrollPane,表示滚动条组件,包括水平滚动条和垂直滚动条两个方向,属于容器组件。该组件一般用于容纳一个JTextArea组件。(10) JPanel对应AWT的Panel,表示面板组件,属于容器组件。该组件不能单独存在,必须放置于某一个更高级的容器当中。JPanel的作用一般用于组件的布局设计。345.4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论