第1章-图形用户界面_第1页
第1章-图形用户界面_第2页
第1章-图形用户界面_第3页
第1章-图形用户界面_第4页
第1章-图形用户界面_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

第一章

图形用户界面1课程目标目前绝大多数应用程序都拥有图形用户界面(GUI,GraphicUserInterface),图形用户界面是由用户界面组件组成的。本章将首先介绍JFC、AWT、Swing和布局管理器等与用户界面组件相关的知识,然后介绍Java的事件处理机制,最后通过实例介绍Java图形用户界面和事件处理程序设计。21.1用户界面组件1.2图形用户界面设计基础1.3计算器实例1.4界面布局1.5程序启动界面1.6数形分层结构31.1.1JFC简介JFC(JavaFoundationClass,Java基础类)是一组图形、GUI和相关的编程任务的标准JavaAPI的基础,由于大部分客户端Java应用程序是以这些API为基础的,所以也将JFC称为基础类。JFC主要包含如下几个部分。1.AWTAWT(AbstractWindowToolkit,抽象窗口工具集)提供了创建GUI的基本功能,它也提供了画图的基本功能。2.SwingSwing是以AWT为基础的使用纯Java语言编写的高级GUI工具集,它提供了许多新的GUI组件以及与GUI相关的应用程序服务。3.Java2DJava2D是以AWT为基础的最新二维图形API,它支持任意图形的独立分辨率、旋转、伸缩,支持文本和图形保真等。4.打印JFC提供了功能强大的打印API。5.数据传送JFC提供了两种数据传送方法:剪贴和拖放。下面我们来介绍JFC中最常用的AWT和Swing。41.1.2AWT自Java1.0以来,AWT就一直是Java的核心,尽管AWT只有基本的图形和GUI功能,并且其中的绝大部分功能已经由Java2中更高级的特性代替了,但AWT仍然是创建更高级的JFC功能的基础。1.AWT组件一个用户界面是由一些可视化组件(VisualComponent)所构成的,组件是一种能以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如按钮、文本编辑框、标签等。如果用AWT创建一个Button,那么,在Windows环境下AWT将会创建一个Windows按钮;在Linux环境下将会创建一个Linux按钮。创建的按钮取决于正在运行的操作系统。2.AWT容器上节介绍了AWT组件,然而要创建一个GUI,必须将这些组件放在一个容器中。容器(Container)实际上是java.awt.Component类的一个抽象子类,它本身也是一个组件,具有组件的所有性质,但它还具有容纳其他组件和容器的功能。容器就像集装箱一样,它本身是一个货物,可以装入船舱中,但它也是一个容器,可以装入其他货物或集装箱。AWT容器主要有两种主要类型:Window和Panel。Window是java.awt.Window的对象,它是可以自由显示的顶级窗口,独立于其他容器。Window类不能实例化,在实际的应用程序中经常使用该类的两个子类:Dialog和Frame。Dialog是一个对话框。Frame是一个带有标题和缩放角的窗口,可以用add()方法给框架添加组件,也能以字符串规定的标题来创建不可见Frame对象,它的缺省布局管理器是BorderLayout,我们也可以用setLayout()方法使其使用其他的布局管理器。51.1.3SwingSwing是可以作为Java2平台的核心部分来使用的新的GUI工具集,它是AWT工具箱的扩展。下面我们就来介绍Swing组件、容器及其体系结构。1.Swing组件Swing组件均为javax.swing包中的一部分,所有的Swing组件都是由javax.awt.JComponent类继承而来的,而JComponent类又是由javax.awt.Component类继承而来的,这意味着Swing组件都是AWT组件。与AWT组件相比,Swing提供的所有GUI组件都是轻量级组件,它们不依赖于底层的操作系统,因此Swing创建的组件在所有平台上功能都一致。Swing组件主要包含在JBuilder9.0的组件托盘【Swing】、【SwingContainer】选项卡,在Java中,即使用相同Swing组件做出的应用程序在不同的操作系统上运行的界面都会有所不同,这是由于诸如按钮、文本框等Swing组件在Java中都是绘制出来的,它的显示效果依赖于不同的操作系统。6本章的前面介绍了用户界面组件的有关知识,从本节开始,将通过实例向大家介绍如何在JBuilder9.0中开发图形用户界面和处理事件的Java应用程序。本节主要利用如下4个简单的实例来介绍Java中各种常用的Swing组件。典型实例:详细介绍了如何利用JBuilder9.0项目向导和应用程序向导建立一个简单的图形用户界面程序。.自己动手+起步:介绍各种文本输入组件,如标签栏、文本域、密码域和文本区等组件。.自己动手+进阶:介绍各种选择组件,如复选框、单选钮、列表框和下拉列表框等组件。.自己动手+提高:介绍各种滚动组件,如滚动条、进度条等。.自己动手+进阶:介绍各种选择组件,如复选框、单选钮、列表框和下拉列表框等组件。.自己动手+提高:介绍各种滚动组件,如滚动条、进度条等。1.2图形用户界面设计基础7本章的前面介绍了用户界面组件的有关知识,从本节开始,将通过实例向大家介绍如何在JBuilder9.0中开发图形用户界面和处理事件的Java应用程序。本节主要利用如下4个简单的实例来介绍Java中各种常用的Swing组件。典型实例:详细介绍了如何利用JBuilder9.0项目向导和应用程序向导建立一个简单的图形用户界面程序。.自己动手+起步:介绍各种文本输入组件,如标签栏、文本域、密码域和文本区等组件。.自己动手+进阶:介绍各种选择组件,如复选框、单选钮、列表框和下拉列表框等组件。.自己动手+提高:介绍各种滚动组件,如滚动条、进度条等。.自己动手+进阶:介绍各种选择组件,如复选框、单选钮、列表框和下拉列表框等组件。.自己动手+提高:介绍各种滚动组件,如滚动条、进度条等。1.2图形用户界面设计基础8典型实例——一个简单的图形用户界面程序本实例首先利用JBuilder9.0项目向导,建立了一个名为“EmptyFrame”的项目利用应用程序向导,建立了一个名为【FrameTitle】的图形用户界面。在所示的用户界面中,选择菜单栏中的【File】/【Exit】命令,将会退出应用程序;选择菜单栏中的【Help】/【About】命令,将弹出如图2-8所示的【About】对话框。单击【About】对话框中的ok按钮,将关闭该对话框。编制一个简单的图形用户界面程序9起步——一个有文本输入组件的程序本实例将向读者介绍4种文本输入组件:JTextField、JPasswordField、JtextArea和Label。下面我们分别来介绍这4种组件。1.JLabelJLabel组件是一种容纳单纯文本的图形组件,它没有边界,也不能对用户的输入作出反应,主要用来对其他组件进行说明。JLabel组建常用的方法如下.·publicStringgetText():返回JLabel组件中的字符串。·publicJLabel():构建一个空的标签。·publicJLabel(Stringtext):构建一个标签,标签中的文本为text。·publicJLabel(Iconimage):构建一个标签,标签中显示的图标为image。·publicvoidsetText(Stringtext):设置标签中的文本。10开发Java程序的步骤

提高------一个有滚动组件的程序在界面中,移动滚动条中的滑块,进度条和滑标的值将值的变化而变化,窗口左下角也将显示当前数值。移动滑标中的滑块,滚动条也将随着滑标数值的变化而变化,窗口左下角同样显示当前数值。本实例主要使用了JScrollBar、JProgressBar和JSlider这3种组件,其中JScrollBar组件和JSlider组件可以通过移动滑块更改组件的数值,JProgressBar组件的数值组件数值的变动而变动,下面分别介绍这3种滑动组件。111.3计算器实例Windows操作系统提供了计算器应用程序,用户可以选择【开始】/【程序】/【附件】/【计算器】命令打开该程序。本节将根据Windows自带的计算器应用程序向读者讲述如何在java中自己动手编写计算器应用程序,并利用该实例向读者讲述如何在Java中处理键盘鼠标事件。本节主要分为如下4个实例。典型实例:介绍了一个简单的计算器,它只能进行简单的加、减、乘、除运算。自己动手+起步:为计算器添加了键盘控制功能,用户可以直接利用键盘操作计算器程序。自己动手+进阶:为计算器添加了函数计算功能log、sqrt等数学函数;自己动手+提高:为计算器添加了数制转换功能制之间的数制转换。使其能进行二进制、十进制之间的数制转换。12典型实例——一个简单的计算器实例制作的计算器是一个比较简单的计算器,只提供了加、减、乘、除4项基本运算用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本编辑框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。其运行界面如图1-1。131.3.2起步——键盘控制的计算器上例计算器的计算工作是通过鼠标单击窗口中的按钮来完成的,本实例添加了键盘控制功能,使其即可通过单击鼠标进行运算工作,也可通过键盘输入完成运算工作。例如按键盘上的“=”键,文本编辑框中将会显示运算的结果,其运行界面如图1-2所示。14进阶—带有函数功能的计算器本实例在上例的基础上增加了8个JButton组件,用来通过Java自带的数学函数实现数学函数运算功能,如sin、cos、tan、atan、log、sqrt等。其运行界面如图1-3。15提高——具有数制转换功能的计算器本实例与上例相比增加了数制转换功能,可实现十进制和二进制之间的转挨,界面中,在文本域中任意输入某个数字,然后单击【二进制】单选钮,文本域中的十进制数将变为二进制数:单击【十进制】单选钮,文本域中的二进制数将还原为十进制数。其运行界面如图1-4。161.4界面布局1.4.1Java界面布局因为Java是跨平台语言,使用绝对坐标显然会出现问题,即在不同平台、不同分辨率下的显示效果是不一样的。例如,在一个1024×768的分辨率屏幕下用绝对定位和绝对尺寸设计的界面,在640×480分辨率下可能会变样。设计比较完善的应用程序在每次启动时都会先取得当前窗口的分辨率,再设置和布局当前窗口控件的坐标和大小。在Java中为了实现跨平台机制,引入了布局管理器来管理界面。通过这些管理器及其组合,能够设计出各种复杂的界面,并且在不同操作系统平台上都能够获得一致的显示界面。布局管理器由setLayout()方法设置,其基本格式如下:17常见的布局管理器1.流式布局管理器FlowLayout设置流式布局管理,可取值:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHT,分别设置左、中、右对齐方式。setLayout(newFlowLayout(FlowLayout.LEFT));2.边界布局管理器BorderLayout设置边界布局管理,可取值:BorderLayout.EAST、BorderLayout.SOUTH、BorderLayout..WEST、BorderLayout.NORTH、BorderLayout.CENTER,分别设置东、南、西,北中分布方式。3.网络布局管理器GridLayout设置网络布局管理:setLayout(GridLayout(intRows,intClos));181.5程序启动界面程序启动界面的原理在应用程序启动时,如果初始化的时间较长,通常需要按排一个表示欢迎使用本程序的启动界面,在初始化完成后该画面自动消失,这就是平时所说的SplashWindow。在Swing中提供了四个顶层的容器类:JFrame、JDialog、JApplet和Jwindow。由于JPrame、Jdialog有标题栏,不适合作为启动界面,而Japplet是Applet的容器,用于在浏览器里显示JavaApplet,而Jwindow刚好能够实现所需要的功能。决定了显示SplashWindow使用Jwindow,还要考虑以下问题:·当显示SplashWindow时,后台的初始化应用程序不能停止运行;·在一定时间后,SplashWindow必须自动消失,进入正常的交互运行界面;·在Jwindow上必须放置提示图片,并且显示速度不能太慢;·SplashWindow必须总在应用程序的其他窗口之上,不能被遮蔽掉。为了让SplashWindow总在最上面显示,可以在Jwindow里面找到一个方法Jwindow.toFrnt(),该方法可以把当前窗口放置在应用程序多个窗口中的最前面。,初始化结束后,使用方法Jwindow.dispose()关闭启动界面。191.6数形分层结构1.6.1数形控件简介很多应用程序都使用数形分层结构来显示数据视图,用户可以展开或收缩视图中的单个子数。在的包中的类,可以生成文件树和目录树。在树形结构中,最基本的对象叫做结点,它表示在给定层次结构中的数据项。树中只有一个根结点,其他结点都从这里引出。除根结点外,其他结点分为两类:一类是带有子结点的分支结点,另一类是不带子结点的叶结点。201.6.2最简单的

温馨提示

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

最新文档

评论

0/150

提交评论