【教学课件】第7章图形用户界面的实现.ppt
《【教学课件】第7章图形用户界面的实现.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章图形用户界面的实现.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章 图形用户界面的实现图形界面作为用户与程序交互的窗口,是软件开发中一项非常重要的工作。本章将会详细介绍如何使用Java语言编写图形界面,利用Java丰富的图形组件创建交互性更好的用户界面。7.1 图形用户界面概述无论采取何种语言、工具实现图形界面,其原理都基本相似。简单而言,图形界面就是用户界面元素的有机合成。这些元素不仅在外观上相互关联,在内在上也具有逻辑关系,通过相互作用、消息传递,完成用户操作的响应。设计和实现图形用户界面时,主要包含两项内容。(1)创建图形界面中需要的元素,进行相应的布局。(2)定义界面元素对用户交互事件的响应以及对事件的处理。7.2 Swing与AWTAWT、S
2、wing作为图形界面的开发包同时存在于同一标准库中,那么二者之间的区别在哪里呢?创建图形界面时如何取舍?本节详细讲述Swing与AWT的关系,以及如何取舍Swing与AWT。7.2.1 Swing与AWT之间的关系Swing诞生之前,Java中用来进行图形用户界面开发的工具包为AWT。AWT是“Abstract Window Toolkit”的缩写,又称为“抽象窗体工具包”。AWT是随早期Java一起发布的GUI工具包,是所有Java版本中都包含的基本GUI工具包,其中不仅提供了基本的控件,并且还提供了丰富的事件处理接口。Swing是继AWT之后Sun推出的又一款GUI工具包。Swing建立在
3、AWT 1.1基础上的,也就是说,AWT是Swing大厦的基石。7.2.2 关于Swing与AWT控件的混用由于AWT中提供的控件,均依赖本地系统实现,而Swing控件属于轻量级控件,是由纯Java编写的,使用基本图形元素直接在屏幕上绘制,因此在搭建界面时,如果将二者同时使用,就有可能会出现遮挡的现象。7.3 事 件 处 理对于GUI的应用程序来说,事件处理是必不可少的,用户与程序之间的交互都是通过事件处理来实现的。当用户与GUI交互时,无论是单击鼠标,还是按下键盘,都会触发相应的事件。事件将通知应用程序发生的情况,接着应用程序会根据不同的事件作出相应的回应。所以在整个过程中涉及到两个对象:事
4、件源与事件监听器。事件源是指触发事件的控件,如按钮、窗体、列表、表格等。不同控件在不同情况下将触发不同的事件,关于事件的信息被封装在事件对象中。7.3.1 事件的层次结构前面已经介绍,虽然现在在开发中使用的都是Swing控件,但事件处理模型还是基于AWT 1.1的。本小节将介绍AWT 1.1中的事件层次结构,所有的事件类都继承自EventObject类,在该类中定义了一个非常有用的getSource()方法,该方法的功能为从事件对象获取触发事件的事件源,为编写事件处理的代码提供方便,该方法的接口如下。7.3.2 窗体事件大部分GUI应用程序都需要使用窗体来作为最外层的容器,可以说窗体是组建GU
5、I应用程序的基础,应用中需要使用的其他控件都是直接或间接放在窗体中的。如果窗体关闭时需要执行自定义的代码,则应该使用事件处理来实现,本小节将结合事件处理模型介绍如何开发处理窗体事件的代码,包括关闭窗体、窗体失去焦点、获得焦点、最小化等情况。7.3.3 鼠标事件当用户在GUI界面上单击鼠标、拖动鼠标、转动鼠标滚轮时,都会触发相应的鼠标事件。对于鼠标事件,Java提供了MouseWheelEvent类和MouseEvent类表示相应的事件。MouseWheelEvent事件主要用来处理与鼠标滚轮转动相关的动作,如鼠标滚轮转动的方向和单位数。而MouseEvent事件则反映了事件发生时鼠标的按键、水
6、平x坐标、垂直y坐标以及关联鼠标的单击次数。7.3.4 事件适配器适配器是指实现了一个或多个监听接口的类,适配器类为所有的事件处理方法都提供了空实现。实际开发中在编写监听器代码时不再直接实现监听接口,而是继承适配器类并重写需要的事件处理方法,这样就避免了编写大量不必要代码的情况,7.4 创建图形用户界面通过上面的介绍,我们已经对图形用户界面编程有了初步的认识。从本节开始将系统地介绍如何开发图形用户界面,尤其是讲述需要用到的基本知识点。7.4.1 窗体在前面介绍窗体事件中曾经讲述过,应用中需要使用的其他控件都是直接或间接放在窗体中的,窗体是组建GUI应用程序的基础。在Swing中,可以利用JFr
7、ame类创建包含标题、边框以及最大化、最小化、关闭按扭的窗口。JFrame类构造器创建的窗体是不可见的,需要在代码中手工指定才可以在屏幕上看见窗体。这样做的目的是因为很多对窗体的特殊操作都需要在窗体被设置为可见之前完成,否则将会在运行时抛出异常。同时,JFrame类构造器创建的窗体默认的尺寸为00像素,默认的位置坐标为0,0。因此在开发中要注意,仅仅将窗体设置为可见的还是不能看到窗体,还需要显式地指定窗体的具体尺寸。7.4.2 面板面板是常用的非顶层容器之一。可以将其他控件放在面板中以组织一个子界面。在Swing中,可以使用javax.swing.JPane类创建面板。JPanel类继承自ja
8、vax.swing.JComponent类。在面板中可以使用不同的布局,按照不同的方式摆放面板中的控件。如果创建具有双缓冲和流布局的JPanel对象,可以使用不带任何参数的构造函数,如下所示:7.4.3 标签不管开发什么样的GUI应用程序,都需要在界面上给用户一些提示性的信息,这时就需要使用标签控件。恰当地使用标签可以使GUI的交互界面更友好,使用户在使用的过程中有更好的体验,本节将介绍使用标签的相关知识。javax.swing.JLabel类即标签类,开发人员可以通过其建立包含文本、图像或两者都包含的标签。JLabel属于普通控件,也继承自javax.swing.JComponent类,该控
9、件主要是用来给出提示信息的,是一种非交互的控件,一般不用于响应用户的输入,并且该控件没有修饰,从界面中是看不到该控件边界的。7.4.4 按扭GUI应用程序中,按钮是与用户交互使用得最多的控件之一,很多功能都是通过用户按下按钮来触发代码完成的。本节将介绍Swing中的按扭javax.swing.Jbutton的使用。javax.swing.JButton类是最简单的按扭类型,当单击按扭时会触发动作事件,如果给按钮注册了相应的监听器,按下按钮就可以执行指定的代码,完成一定的工作。JButton类是继承自javax.swing.AbstractButton类的,按钮的参数可以通过不同的构造函数初始化
10、,7.5 布 局 管 理除了顶层容器控件外,其他的控件都需要添加到容器当中,容器相当于一个仓库。而布局管理器就相当于仓库管理员,采用一定的策略来管理容器中各个控件的大小、位置等属性。通过使用不同的布局管理器,可以方便地设计出各种控件组织方式的界面。常用的布局管理器有流布局、网格布局、卡片布局,本节将对这几种布局进行简要介绍。7.5.1 流布局流布局(FlowLayout)是一种非常简单的布局管理器,它按照控件添加的顺序,依次将控件从左至右、从上至下进行摆放,若一行不能放完则会自动转至下一行继续摆放。每一行所放置的控件默认会居中显示,也就是说,若在一行中所有的控件并没有占满这一行,则这些控件会显
11、示在此行的中间。7.5.2 网格布局网格布局即GridLayout布局.该布局会尽量按照给定的行数和列数排列所有的控件,添加到该布局容器中的控件都将自动调整为相同尺寸,其填充的规则是尽量使现有控件形成矩形。若行和列的设置都不为0的话,其在形成矩形的同时会保证行数,而列数则是由控件总数与给定的行数来决定的。若行为0而列不为0的话,在形成矩形的同时会保证列数,而行数则是由控件总数与给定的列数来决定的。当容器的大小改变时,所有的控件也都会随着自动改变大小以保证尽量充满整个容器。7.5.3 卡片布局卡片布局即CardLayout布局。在卡片布局中,布局的容器中可以添加任意多个控件,但同一时刻只能看见其
12、中的一个控件。所有被添加的控件与容器的大小相同,也就是说,所有添加进卡片布局容器中的控件大小是相同的。可以通过调用卡片布局管理器的相应方法使指定的控件显示,这些方法包括指定下一个、一个、第一个、最后一个或第几个控件显示。7.6 选 择 控 件图形界面应用程序中控件是必不可少的基本元素,将各种控件有机地组合起来,便可以搭建出各种各样的图形界面,用来满足不同应用的需要。作为开发人员,必须熟练掌握各种基本控件的使用才能从容应对各种开发的需求,从本章开始将详细介绍Swing中的各种常用控件。7.6.1 控件概述Java中所有的Swing控件都继承自javax.swing.JComponent类,而JC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 图形 用户界面 实现
限制150内