第13章图形界面编程_第1页
第13章图形界面编程_第2页
第13章图形界面编程_第3页
第13章图形界面编程_第4页
第13章图形界面编程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第13章图形界面编程本章之前的所有应用程序都是命令行界面,没有特定的用户输入界面。从本章开始,将要学习图形界面编程。对于一个软件来说,不止要有比较强大完善的功能,而且还要有一个简洁美观的界面。本章就主要学习如何进行图形界面编程。其中包括有AWT和Swing两部分内容。Swing基础事件Swing组件布局管理器13.1AWT简介AWT的全称是抽象窗口工具集(AbstractWindowToolkit),它是一个特殊的组件,其中包含有其他的组件,并且它的库类也非常丰富。包括了创建Java图形界面程序的所有工具。可以利用AWT在容器中创建标签、按钮、复选框、文本框等用户界面元素。AWT中包括了图形界面编程的基本类库。是Java语言GUI程序设计的核心,它的作用是为用户提供基本的界面构件。这些构件是为了使用户和机器之间能够更好的进行交互,而用来建立图形用户界面的独立平台。其中主要由以下几部分,主要包括:组件类(Component)、容器类(Container)、图形类(Graphics)和布局管理器(LayoutManager)。13.2Swing基础Swing元素的屏幕显示性能要比AWT要好,而且Swing是使用纯Java来实现的。所以Swing也理所当然的具有Java的跨平台性。但Swing并不是真正使用原生平台提供设备,而是仅仅在模仿,因此可以在任何平台上来使用Swing图形用户界面组件。它不必在它们自己本地窗口中绘制组件,而是在它们所在的重量级窗口中绘制,因为Swing绝大部分是轻量级的组件。13.2.1Swing的类层次结构Javax.swing包中有顶层容器和轻量级两种类型的组件,Swing轻量级的组件都是由AWT的Container类来直接或者是间接派生而来的。Swing包是JFC(JavaFoundationClasses)的一部分,它由许多包组成,如表13.2所示。在以上包中,javax.swing是Swing所提供最大的包,其中包含有100个类和25个接口,并且绝大部分的组件都包含在Swing包中。javax.swing.event包中定义了事件和事件处理类,这与java.awt.event包类似,主要包括事件类和监听器接口、事件适配器。13.2.2Swing特点组件的多样化:虽然AWT是Swing的基础,但是Swing中却提供了比AWT更多的图形界面组件。而且Swing中组件的类名都是由字母“J”开头,还增加了一些比较复杂的高级组件如JTable、JTree13.2.3Swing程序结构简介使用Swing进行程序设计,首先要引入Swing的包,创建顶层的容器,在容器中创建按钮和标签等一系列的组件并将组件添加到顶层容器中,然后在组建的周围添加边界,最后对组件的事件进行处理。13.3Swing组件Swing的组件与AWT组件相似,但又为每一个组件增添了新的方法,并提供了更多的高级组件。所以本节Swing的基本组件选取几个比较典型的组件进行详细讲解,本节没有讨论到的组件,读者在使用中遇到的困难可参阅API文档。13.3.1按钮(Jbutton)Swing中的按钮时Jbutton,它是javax.swing.AbstracButton类的子类,Swing中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且还可以将多个图像指定给一个按钮。在前面的HelloWorld例子中就是用到了一个按钮。在Jbutton中有如下几个比较常用的构造方。JButton(Iconicon):按钮上显示图标。JButton(Stringtext):按钮上显示字符。JButton(Stringtext,Iconicon):按钮上既显示图标又显示字符。13.3.2复选框(JCheckBox)是用复选框可以完成多项选择,Swing中的复选框和AWT中复选框相比,优点就是Swing复选框中可以添加图片。该类是javax.swing.JToggleButton的子类复选框可以为每一次的单击操作添加一个事件,复选框的构造方法如下。JCheckBox():创建一个无文本、无图标、未被选定的复选框。13.3.3单选框(JRadioButton)单选框(JRadioButton)与AWT中的复选框组功能类似,通常JRadoButton和ButtonGroup来配合一起是用,作用就是一次创建一组按钮,并且在这一组按钮中,每一次只能够选中一个按钮。需要使用到add()方法将JRadioButton添加到ButtonGrouo中。13.3.4组合框(JcomboBox)组合框,顾名思义,就是将一些组件例如按钮及下拉菜单组合的组件。用户可以使用下拉菜单中选择不同的选项,如果此时的组合框处于编辑状态,还可以在组合框中键入值。13.3.5进程条(JprogressBar)进度条就是用图形的方式来模拟描述任务进度的组件。任务的过程中,进度条会以百分比的形式来显示。在程序结束后,进度条显示百分之百13.3.6表格(JTable)表格(JTable)是Swing新增加的组件,主要是为了将数据以表格的形式显示。通常用数据模型类的对象来保存数据,数据模型类派生于AbstractTableModel类,并且必须重写抽象模型类的几个方法,例如getColumnCount,getRowCount,getColumnName,getValueAt。因为表格会从这个数据模型的对象中自动获取数据,数据模型类的对象负责表格大小(行/列)、数据填写、表格单元更新等与表格有关的属性和操作。13.3.7树(JTree)树(JTree)中特定的节点可以由TreePath标识或由其显示行标识。当展开某一个节点的所有祖先时,将显示该节点,折叠节点是隐藏位于折叠祖先下面的节点。可查看节点的父类节点都是可以展开的,但是它们可以显示也可以不显示。显示节点必须是可查看的并且位于显示区域。13.3.8文本框(JTextField)文本框具有文本输入和编辑的功能,文本框组件用于获取到用户所输入的文本。除此之外还有文本区,文本区和文本框的区别是,前者可以输入多行文本,而文本框只接受单行文本的输入。实现文本框功能的类是JTextField,其中提供了多个方法,可以设置输入的文本字符长度限制。密码框和文本框的外观一样,并且也继承自JTextField类,密码框只提供专门的密码输入,输入内容不能直接显示,在密码框中以星号或其他形式的符号显示在上面。下面的示例是一个登陆框,其中包括用户名和密码,13.4布局管理器布局管理器可以对窗口中的组件做有效的布局。Java中的布局管理师容器和布局管理器相分离,也就是容器只是把组件放置进来。至于如何放置就要使用到布局管理器了。布局管理器主要包括有BroderLayout、FlowLayout、GridLayout等。本节就主要介绍一下常用的布局管理器。13.4.1FlowLayout布局管理器FlowLayout布局管理器也叫做流式布局管理器,使用它可以将组件从左到右、从上到下进行排放。并且在默认的情况下尽可能的选用居中放置。荣会根据自身的大小来进行自动排列,而不需要用户进行任何明确的操作。流式布局管理器的特点是在一行上水平的进行排列,直到该行没有空间为止,然后就会重新换行进行排列。当用户缩小容器时,如果长度小于当前摆放的组件长度,则将多余的组件切换到下一行中进行排列。如果此时将容器放大,则会将第二排的组件重新放置到第一排中多出的空间中。13.4.2BorderLayout布局管理器BorderLayout布局管理器又叫边界布局管理器,在Java中是最基础的布局管理器之一,而且也是比较常用的管理器,也是面板默认的布局管理器。边界布局管理器的特点就是将整个面板分为五个部分,分别对应东、西、南、北、中。如果一个面板被设置成边界布局后,所有填入某一区域的组件都会按照该区域的空间进行调整,直到完全充满该区域。如果此时将面板的大小进行调整,则四周区域的大小不会发生改变,只有中间区域被放大或缩小。13.4.3BoxLayout布局管理器BoxLayout布局管理器又叫做箱式布局管理器,顾名思义,就相当于将一组组件放置到一个箱子中然后将箱子排成一列。用户还可以通过传入构造方法的参数来决定如何排列,分为横向和纵向两种。创建箱式布局管理器时需要设置参数,用于选择横向布局或是纵向布局,选择横向布局时,组件的排列顺序是从左到右。选择纵向布局时,组件的排列顺序是从上到下。关于组件的大小设置,主要有以下三个方法。setPreperredSize(Dimensiondim):该方法用于设置首选大小。setMaximumSize(Dimensiondim):该方法用于设置最大值。setMinimumSize(Dimensiondim):该方法用于设置最小值。13.4.4GridLayout布局管理器GridLayout是网格布局管理器,该管理器负责将一个容器按照规则的形状分割成多个区域。对GridLayout的设置,可以根据横向或者是纵向的放法,两者指定的方法分别是setHgap和setVgap。而且可以直接在构造方法中指定,横向组件间隔宽度和纵向组件间隔宽度对应属性是hgap和vgap。13.5事件处理事件处理是图形界面和用户进行交互的重要组成部分,Java中的事件处理机制主要包括有事件源、事件和事件处理器三个部分。首先要做的是为事件注册相对应的事件处理器,并制定事件,然后由事件处理器获取后进行相应的事件处理。13.5.1事件监听器事件监听器是监听所触发事件的对象,其中包含有对事件发生后的事件处理操作。对于不同的事件,Java中也定义了所相应的事件监听器接口。如下是几个比较常用的事件监听器接口。13.5.2事件适配器前面介绍了事件监听器,都是以实现事件监听器的接口方式进行定义的。而且前面几章中也介绍过,实现接口,就要实现接口中的所有方法。Java中针对每个事件接听器接口,系统定义了相应的实现类。并称为事件适配器,只需要继承事件适配器并覆盖几个必要的方法就可以了。这样一来也使得代码变的更加简洁。13.5.3事件事件就是触发一个组件所产生的动作,在Swing中,有很多的事件,例如鼠标事件、焦点事件等,每一个事件类都会与一个事件类接口相对应,并且由事件所引起的动作都会存放在接口需要实现的方法中。1.鼠标事件鼠标事件是由MouseEvent负责,而鼠标监听器则有两种,分别是MouseListener和MouseMotionListener。其中MouseListener负责鼠标的按下、抬起、进入某以区域。当组件注册了鼠标监听器后,如果组件发生以上的动作事件后,就会激活相应的事件处理方法。2.键盘事件键盘事件是用于处理在键盘上所输入的信息,表示键盘事件的类是KeyEvent,该类可以获取到产生键盘事件的事件源,而且还可以获取到键盘输入按键的信息。3.焦点事件鼠标单击到某一个按钮上的图片时,这个按钮就获得了焦点。例如,鼠标单击窗口

温馨提示

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

评论

0/150

提交评论