您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 轻松学Java之图形界面编程
第16章图形界面编程图形用户界面(GraphicalUserInterface)简称GUI,提供了一种更加直观、友好的与用户进行交互的方式。利用Java语言进行图形用户界面操作主要由java.awt和javax.swing两个包来完成。其中,AWT包是图形用户界面处理的基本工具包,Swing包在AWT包的基础上进行了升级、扩展,具有更加强大的图形界面开发功能。本章在了解AWT包功能的基础上,重点讲解Swing的功能。16.1AWT简介Java1.0的出现带来了抽象窗口工具箱(AWT)。设计目标是希望构建一个通用的GUI,使得利用它编写的程序能够运行在所有的平台上,以实现Sun公司提出的口号“一次编写,随处运行”。JavaAWT中包含了许多类来支持GUI设计。AWT由Java的java.awt包提供,该包中有许多用来设计GUI的组件类,如按钮、菜单、列表、文本框等组件类;同时还包含窗口、面板等容器类。AWT的具体层次结构如图16.1所示。componentContainerButtonScrollbarCanvasLableListTextFieldTextAreaCheckBoxPanelWindowDialogFrame16.1AWT简介Java提供了一系列AWT软件包,其中主要的包及包的描述如图16.2所示。java.awt包是AWT的核心包,包含用于创建用户界面和绘制图形图像的所有类java.awt.color包java.awt.datatransfer包提供定义颜色及其空间提供在应用程序之间和在应用程序内部传输数据的接口和类java.awt.event包提供处理由AWT组件所激发的各类事件的接口和类java.awt.font包java.awt.image包提供各种字体,包括类及接口用于图像处理,提供创建和修改图像的各种类java.awt.print包2D图像的API包,为通用的打印API提供类和接口java.awt.color包swing包,提供了一组轻量级的组件16.1AWT简介java.awt包提供了基本的Java程序的GUI设计工具。主要包括组件、容器和布局管理器三个概念,其具体描述如图16.3所示。GUI设计工具组件(Component)容器(Container)布局管理器(LayoutManager)每个容器都有一个布局管理器,使用布局管理器可以对容器中的某个组件进行定位或判断其大小尺寸等Component的子类,容器本身是一个组件,具有组件的所有性质,但是其主要功能是容纳其他组件和容器图形用户界面的最基本组成部分是组件,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等16.2Swing简介Swing是Java基础类库(JavaFoundationClasses)中有关图形界面的类库。Swing扩展自AWT。例如JFrame扩展自Frame,JButton扩展自Component等。基本上AWT中的每种控件都能在Swing中找到替代品,比如AWT中的Button对应于Swing中的JButton,AWT中的TextField对应于Swing中的JTextField等。16.2Swing简介Swing包是JFC(JavaFoundationClasses)的一部分,它由许多包组成,这些包的名称及描述如表16.1所示。包名包的描述Com.sum.swing.plaf.motif实现Motif界面样式代表类Com.sum.java.swing.plaf.windows实现Windows界面样式的代表类javax.swingSwing组件和使用工具javax.swing.borderSwing轻量组件的边框javax.swing.colorchooserJcolorChooser的支持类/接口javax.swing.event事件和侦听器类javax.swing.filechooserJFileChooser的支持类/接口javax.swing.pending未完全实现的Swing组件javax.swing.plaf抽象类,定义UI代表的行为javax.swing.plaf.basic实现所有标准界面样式公共基类javax.swing.plaf.metal它们实现Metal界面样式代表类javax.swing.tableJtable组件javax.swing.text支持文档的显示和编辑javax.swing.text.html支持显示和编辑HTML文档javax.swing.text.html.parserHtml文档的分析器javax.swing.text.rtf支持显示和编辑RTF文件javax.swing.treeJtree组件的支持类javax.swing.undo支持取消操作16.3容器类窗口(JFrame)、面板(JPanel)和对话框(J)是Swing中提供用来创建表示图形用户界面的类。该类的对象将被当作容器使用,所有的Swing组件都必须被添加到容器中,才能被显示出来。16.3.1JFrame类JFrame是一个窗口容器组件,可以被显示在用户桌面上,同时也是一个框架,在其中,可以添加需要的其他的Swing组件。JFrame是少数几个不是通过绘制的方式显示的Swing组件。JFrame类的构造方法如图16.5所示。publicJFrame(Stringtitle)构造一个初始状态是不可见的、有指定标题的JFrame对象。参数title指明了JFrame对象的标题16.3.1JFrame类JFrame类中还提供了一些与窗口有关的方法。其主要方法与方法描述如表16.2所示。方法方法描述publicvoidsetVisible(booleanb)判断窗体是否可见。如果参数b为true则表示显示该窗体,否则表示不可见publicvoidsetBackground(Colorc)设置窗体背景颜色publicvoidsetTitle(Strings)设置标题。其中参数s表示要显示在窗体边界中的标题publicStringgetTitle()获取窗体边界的标题。如果没有标题则返回空字符串publicvoidpack()调整适合其子组件的大小和布局窗口的大小publicvoidsetResizable(booleanresizable)设置窗口大小是否可以调整publicContainergetContentPane()返回此窗体的contentPane对象publicvoidsetLayout(LayoutManagermanager)设置布局管理器publicvoidvalidate()验证容器及其容器中的组件16.3.2JDialog类JDialog是一个用来创建对话框的类,是Dialog类的子类。创建的JDialog对象可以用来向用户返回信息,接收用户的输入,实现与用户的交互。JDialog与JFrame的区别在于:JDialog对象需要依赖于其他的对话框(比如Jframe)而存在,当它所依赖的对话框关闭或最小化的时候,该对话框也随之关闭或最小化。16.3.2JDialog类JDialog类创建对话框对象的构造方法如图16.7所示。JDialog类中的主要方法及方法描述如表16.3所示。Dialog(JFrameframe,Strings)创建一个对话框对象,初始状态为不可见。参数s用来设置对话框的名字Dialog(JFrameframe,Strings,booleanb)创建一个对话框对象。参数s用来设置对话框的名字,参数b用来决定该对话框的模式方法方法描述StringgetTitle()用于获取对话框的名字voidsetTitle(Strings)用于设置对话框的名字voidsetModal(booleanb)用于设置对话框的模式setSize(intwidth,intheight)用于设置对话框的大小voidsetVisible(booleanb)用于设置对话框是否可见16.3.3JPanel类在得到了JFrame的内容面板后我们就可以直接将其他的Swing组件放在其中,或者直接在上面描绘图画或文字,但是习惯上一般不会这么做。通常会将这些图画或文字信息描绘在名为JPanel的容器上,然后再将JPanel实例放在内容面板上。这样可以使得面板上的布局更合理。JPanel通常只作为纯粹的容器来使用,它不能像框架、窗口或者对话框那样独立存在。JPanel的构造方法如图16.9所示。JPanel()构造一个使用默认的布局管理器创建的面板JPanel(LayoutManagerlayout)构造一个使用指定布局管理器的面板16.4Swing常用基本组件创建图形用户界面GUI,就是为了让计算机程序更好的和用户交互。JavaSwing提供了二十多种不同的用户界面组件。所有的Swing组件都是从javax.swing.Jcomponent类中派生而来的,从而继承了组件所特有的属性和方法。16.4.1常用组件的共性操作Swing类库中的组件都继承自javax.swing.JComponent,因此都具有JComponent的操作,包括设置背景色、设置前景色、设置字体以及设置是否禁用等。表16.4中是JComponent中常用的方法及方法描述。方法方法描述intgetHeight()返回组件高度intgetWidth()返回组件宽度StringgetToolTipText()返回工具提示voidsetToolTipText(Stringtext)设置工具提示DimensiongetSize(Dimensionrv)返回尺寸intgetX()返回位置xvoidsetBackground(Colorbg)设置背景色voidsetOpaque(booleanisOpaque)设置是否透明voidsetVisible(booleanaFlag)设置是否可见voidsetFont(Fontfont)设置字体voidsetBorder(Borderborder)设置边框16.4.2按钮(JButton)按钮是用户界面中常用的组件。用户使用Swing按钮可以显示图像,将整个按钮设置为窗口默认图标,来处理鼠标在按钮上的事件。java.swing包中提供了标准的按压式按钮(JButton)。同时提供了选择式按钮:多选择(JCheckBox)、单选择(JRadioButton)等。我们在这里先来讲解JButton的知识。JButton的构造方法如图16.11所示。publicJButton()方法用于创建不带有设置文本或图标的按钮publicJButton(Iconicon)方法publicJButton(Stringtext)方法用于创建一个带图标的按钮用于创建一个带文本的按钮publicJButton(Actiona)方法用于创建一个按钮,其属性从所提供的Action中获取16.4.3文本框(JTextField)与密码输入框(JPasswordField)文本框(JTextField)也是一种常见的组件,用于处理一行文本(中间没有回车符)。JTextField是JTextComponent的子类。密码输入框是JTextField的一个子类。JTextField和JPasswordField的构造函数形式和常用方法完全一样。这里只列出JTextField的构造函数,如图16.13所示。JTextField()构造一个空文本域JTextField(Stringtext)JTextField(intcolumns)构造一个显示指定字符串的文本域构造一个显示指定列数的空文本域JTextField(Stringtext,intcolumns)构造一个具有显示指定字符串,指定列数的文本域16.4.4文本域(JTextArea)文本域(JTextArea)也是一种常用组件,用于处理多行文本。JTextArea同JTextField一样,都是JTextCom
本文标题:轻松学Java之图形界面编程
链接地址:https://www.777doc.com/doc-4921964 .html