版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
轻松学之图形界面编程第1页,课件共60页,创作于2023年2月16.1AWT简介Java1.0的出现带来了抽象窗口工具箱(AWT)。设计目标是希望构建一个通用的GUI,使得利用它编写的程序能够运行在所有的平台上,以实现Sun公司提出的口号“一次编写,随处运行”。JavaAWT中包含了许多类来支持GUI设计。AWT由Java的java.awt包提供,该包中有许多用来设计GUI的组件类,如按钮、菜单、列表、文本框等组件类;同时还包含窗口、面板等容器类。AWT的具体层次结构如图16.1所示。第2页,课件共60页,创作于2023年2月16.1AWT简介Java提供了一系列AWT软件包,其中主要的包及包的描述如图16.2所示。第3页,课件共60页,创作于2023年2月16.1AWT简介java.awt包提供了基本的Java程序的GUI设计工具。主要包括组件、容器和布局管理器三个概念,其具体描述如图16.3所示。第4页,课件共60页,创作于2023年2月16.2Swing简介Swing是Java基础类库(JavaFoundationClasses)中有关图形界面的类库。Swing扩展自AWT。例如JFrame扩展自Frame,JButton扩展自Component等。基本上AWT中的每种控件都能在Swing中找到替代品,比如AWT中的Button对应于Swing中的JButton,AWT中的TextField对应于Swing中的JTextField等。第5页,课件共60页,创作于2023年2月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支持取消操作第6页,课件共60页,创作于2023年2月16.3容器类窗口(JFrame)、面板(JPanel)和对话框(J)是Swing中提供用来创建表示图形用户界面的类。该类的对象将被当作容器使用,所有的Swing组件都必须被添加到容器中,才能被显示出来。第7页,课件共60页,创作于2023年2月16.3.1JFrame类JFrame是一个窗口容器组件,可以被显示在用户桌面上,同时也是一个框架,在其中,可以添加需要的其他的Swing组件。JFrame是少数几个不是通过绘制的方式显示的Swing组件。JFrame类的构造方法如图16.5所示。第8页,课件共60页,创作于2023年2月16.3.1JFrame类JFrame类中还提供了一些与窗口有关的方法。其主要方法与方法描述如表16.2所示。方法方法描述publicvoidsetVisible(booleanb)判断窗体是否可见。如果参数b为true则表示显示该窗体,否则表示不可见publicvoidsetBackground(Colorc)设置窗体背景颜色publicvoidsetTitle(Strings)设置标题。其中参数s表示要显示在窗体边界中的标题publicStringgetTitle()获取窗体边界的标题。如果没有标题则返回空字符串publicvoidpack()调整适合其子组件的大小和布局窗口的大小publicvoidsetResizable(booleanresizable)设置窗口大小是否可以调整publicContainergetContentPane()返回此窗体的contentPane对象publicvoidsetLayout(LayoutManagermanager)设置布局管理器publicvoidvalidate()验证容器及其容器中的组件第9页,课件共60页,创作于2023年2月16.3.2JDialog类JDialog是一个用来创建对话框的类,是Dialog类的子类。创建的JDialog对象可以用来向用户返回信息,接收用户的输入,实现与用户的交互。JDialog与JFrame的区别在于:JDialog对象需要依赖于其他的对话框(比如Jframe)而存在,当它所依赖的对话框关闭或最小化的时候,该对话框也随之关闭或最小化。第10页,课件共60页,创作于2023年2月16.3.2JDialog类JDialog类创建对话框对象的构造方法如图16.7所示。JDialog类中的主要方法及方法描述如表16.3所示。方法方法描述StringgetTitle()用于获取对话框的名字voidsetTitle(Strings)用于设置对话框的名字voidsetModal(booleanb)用于设置对话框的模式setSize(intwidth,intheight)用于设置对话框的大小voidsetVisible(booleanb)用于设置对话框是否可见第11页,课件共60页,创作于2023年2月16.3.3
JPanel类在得到了JFrame的内容面板后我们就可以直接将其他的Swing组件放在其中,或者直接在上面描绘图画或文字,但是习惯上一般不会这么做。通常会将这些图画或文字信息描绘在名为JPanel的容器上,然后再将JPanel实例放在内容面板上。这样可以使得面板上的布局更合理。JPanel通常只作为纯粹的容器来使用,它不能像框架、窗口或者对话框那样独立存在。JPanel的构造方法如图16.9所示。第12页,课件共60页,创作于2023年2月16.4Swing常用基本组件创建图形用户界面GUI,就是为了让计算机程序更好的和用户交互。JavaSwing提供了二十多种不同的用户界面组件。所有的Swing组件都是从javax.swing.Jcomponent类中派生而来的,从而继承了组件所特有的属性和方法。第13页,课件共60页,创作于2023年2月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)设置边框第14页,课件共60页,创作于2023年2月16.4.2按钮(JButton)按钮是用户界面中常用的组件。用户使用Swing按钮可以显示图像,将整个按钮设置为窗口默认图标,来处理鼠标在按钮上的事件。java.swing包中提供了标准的按压式按钮(JButton)。同时提供了选择式按钮:多选择(JCheckBox)、单选择(JRadioButton)等。我们在这里先来讲解JButton的知识。JButton的构造方法如图16.11所示。第15页,课件共60页,创作于2023年2月16.4.3文本框(JTextField)与密码输入框(JPasswordField)文本框(JTextField)也是一种常见的组件,用于处理一行文本(中间没有回车符)。JTextField是JTextComponent的子类。密码输入框是JTextField的一个子类。JTextField和JPasswordField的构造函数形式和常用方法完全一样。这里只列出JTextField的构造函数,如图16.13所示。第16页,课件共60页,创作于2023年2月16.4.4文本域(JTextArea)文本域(JTextArea)也是一种常用组件,用于处理多行文本。JTextArea同JTextField一样,都是JTextComponent的子类,因此它们的很多操作都类似,我们不再赘述。JTextArea的构造函数如图16.15所示。第17页,课件共60页,创作于2023年2月16.4.5标签(JLabel)标签(JLabel)用来显示一段文本,常用在JTextField或者JTextArea前面,提示用户要填写什么样的信息。JLabel用于显示文字,也可以同时显示文字和图标,一般不用于接收鼠标键盘的动作。JLabel的构造方法如图16.17所示。第18页,课件共60页,创作于2023年2月16.4.6单选按钮(JRadioButton)JRadioButton用来实现单选按钮组件,按钮有选中和没被选中两种状态。多个单选按钮中,一次只能有一个按钮处于被选中状态。JRadioButton的构造方法如图16.19所示。第19页,课件共60页,创作于2023年2月16.4.7复选框(JCheckBox)JCheckBox是用来实现JCheckBox的组件。复选框是一个可以被选定和取消选定的项,它将其状态显示给用户。一次可以选中多个复选框。JCheckBox类的构造方法如图16.21所示。第20页,课件共60页,创作于2023年2月16.4.8下拉列表(JComboBox)下拉列表(JComboBox)是一种常见的组件。用户可以从下列的菜单列表中选择所需要的数据。一个下拉列表只能选择一个选项。JComboBox的构造方法如图16.23所示。可以将需要在下拉列表中显示的各项放入一个数组中,然后利用其相应的构造方法将数组元素的各项显示出来。第21页,课件共60页,创作于2023年2月16.4.9列表(JList)JList是用来表示列表的组件。该组件与下拉列表不同,它可以显示多个项目的内容,并且允许用户从列表中选择一个或多个对象。JList的主要构造方法如图16.25所示。与下拉列表相同,可以将需要显示的内容先放入一个数组中,然后使用带有Object类型数组为参数的的构造方法创建一个JList对象,将列表中各项显示出来。第22页,课件共60页,创作于2023年2月16.4.10滚动条(JScrollPane)JscrollPane类的对象可以创建一个垂直或者水平方向的滚动条。在实际使用中,它需要和某个容器相关联。例如,表格、窗体等。JScrollPane类的构造方法如图16.27所示。第23页,课件共60页,创作于2023年2月16.5Swing高级组件16.4小节中我们介绍了Swing基本组件,但在实际应用中,对于一些比较复杂的界面,除了使用这些基本组件之外,还需要使用诸如表格、菜单、工具栏等这些组件。本节我们就来介绍Swing中的一些高级组件的创建和使用,包括表格、树、菜单,以及对话框等组件。第24页,课件共60页,创作于2023年2月16.5.1表格(JTable)表格(JTable)是Swing新增加的组件,主要是为了将数据以表格的形式显示。JTable是一个用来显示和编辑二维单元表格的组件。可以通过创建一个二维数组对象,并将二维数组中定义并初始化的值放入到表中。Jtable创建表格的主要构造方法如图16.29所示。第25页,课件共60页,创作于2023年2月16.5.2树(JTree)树是非常重要也是常用的一种数据结构。在计算机中也有着广泛的应用,计算机中的目录和文件的存储结构都是树形的。在Swing中,可以使用JTree来构建一个树形结构模型。首先我们可以先举一个树形结构的例子,例如在“我的电脑”的C盘下的目录结构,如图16.31所示。第26页,课件共60页,创作于2023年2月16.5.2树(JTree)在这个图中我们要注意以下几点:一颗树中只有一个根结点。其余结点都是从该结点引出。除根结点外。其余结点要么是没有子结点的结点要么是带有子结点的结点。没有子结点的结点称为叶子结点。在图16.31的树结构中,“计算机”是根结点,“Intel”文件是一个叶子结点,“NVIDIA”文件是一个带有子结点的结点。然后我们看JTree的主要的构造方法,如图16.32所示。第27页,课件共60页,创作于2023年2月16.5.3菜单(JMenu)菜单(JMenu)是标题栏下面的一行文字部分。菜单是应用程序中最常用的组件。菜单的组织方式为:一个菜单条JMenuBar包含多个菜单项(JMenuItem)。JMenuItem有两个子类,分别为JRadioButtonMenuItem及JCheckBoxMenuItem用于表示单选菜单项和复选菜单项。第28页,课件共60页,创作于2023年2月16.5.3菜单(JMenu)JMenu组件类的主要构造方法如图16.34所示。创建菜单项的JMenuItem的主要构造方法如图16.35所示。第29页,课件共60页,创作于2023年2月16.5.4工具栏(JToolBar)工具栏(JToolBar)提供了一种可以快速访问界面中常用命令的方式。通常工具栏应该放到边界布局中的一边。可以水平和垂直放置,也可以拖动工具栏将其放置在想要放置的位置。工具栏一般放到菜单栏的下面,可以把菜单栏中的常用命令放到工具栏中,以方便用户操作。第30页,课件共60页,创作于2023年2月16.5.4工具栏(JToolBar)Java中可以通过创建JToolBar对象来实现工具栏。JToolBar的主要构造方法如图16.37所示。orientation参数可以是以下两个值中的任何一个。SwingConstants.HORIZONTAL表示工具栏以水平方向放置。SwingConstants.VERTICAL表示工具栏以垂直方向放置。第31页,课件共60页,创作于2023年2月16.5.5进程条(JprogressBar)进程条(JprogressBar)是以图形化的方式来描述任务进度的组件。在任务完成过程中,进度条显示该任务完成的百分比,百分比通常用可视化的矩形表示,该矩形开始为空,随着任务的执行,组件被填满。JprogressBar的主要构造方法如图16.39所示。第32页,课件共60页,创作于2023年2月16.5.6对话框(JDialog)对话框是一种大小不能变化、不能有菜单的容器窗口,对话框不能作为一个应用程序的主框架,而必须包含在其他的容器中。Java语言提供多种对话框类来支持多种形式的对话框。我们这里只为大家介绍一下简单的标准对话框——JOptionPane。第33页,课件共60页,创作于2023年2月16.5.6对话框(JDialog)JOptionPane提供的对话框是模式对话框。使用JOptionPane,可以创建和自定义问多种类型的对话框。JOptionPane类的构造方法如图16.41所示。第34页,课件共60页,创作于2023年2月16.6布局管理器在Java语言中,把创建的组件放置到对话框中,需要设置对话框界面的格式,这时候就必须使用布局管理器(layoutmanager),来排列界面上的组件。当组件被加入到容器中时,将如何排列,都由布局管理器来进行管理。Java中的布局管理器包括:FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。当创建好需要的布局管理器后,就可以调用容器的setLayout()方法,来设定该容器的布局方式。下面我们为大家具体介绍几种主要的布局管理器。第35页,课件共60页,创作于2023年2月16.6.1BorderLayout管理器BorderLayout布局管理器将容器划分为东(East)、西(West)、南(South)、北(North)、中(Center)五个区域。它是Frame类的默认布局管理器。采用BorderLayout布局时,向容器中添加组件需要指定组件所在的区域。其大致所分区域如图16.43所示。第36页,课件共60页,创作于2023年2月16.6.1BorderLayout管理器BorderLayout类的主要构造方法如图16.44所示。图中参数align指定了布局的位置,如表16.5所示。参数参数描述BorderLayout.CENTER中间BorderLayout.EAST东边BorderLayout.WEST西边BorderLayout.SOUTH南边BorderLayout.NORTH北边第37页,课件共60页,创作于2023年2月16.6.2FlowLayout管理器流动布局是使用FlowLayout类来创建的。该布局方式是最简单的一种布局管理器,其排列组件的方式是按照:从左到右排列,当组件排列到容器行尾时,会自动换行并继续排列剩下的组件。它是Panel类的默认布局管理器。我们可以调用相关方法设置不同的组件间距、行距以及对齐方式。FlowLayout管理器的布局示意图如图16.46所示。第38页,课件共60页,创作于2023年2月16.6.2FlowLayout管理器FlowLayout类的主要构造方法如图16.47所示。第39页,课件共60页,创作于2023年2月16.6.2FlowLayout管理器图中参数align指定一种对齐方式。其具体描述如表16.6所示。如果对窗体的大小进行调整,组件在流布局中会根据窗体调整的大小重新调整其位置。如图16.49所示。参数参数描述FlowLayout.LEFT靠左排列FlowLayout.CENTER置中排列FlowLayout.RIGHT靠右排列FlowLayout.LEADING对齐左边界FlowLayout.TRAILING对齐右边界第40页,课件共60页,创作于2023年2月16.6.3CardLayout管理器网格布局GridLayout管理器,可以将容器划分为若干行与若干列的网格区域,并将组件放置在由行和列组成的网格中。采用GridLayout布局时,在容器中按照从左到右、从上到下的顺序往网格中逐个添加组件。GridLayout管理器的布局示意图如图16.50所示。第41页,课件共60页,创作于2023年2月16.6.3CardLayout管理器GridLayout类的主要构造方法如图16.51所示。GridLayout类提供的对网格布局中的行、列,以及水平和垂直间距进行设置的方法如表16.7所示。方法名称方法描述publicvoidsetRows(introws)设置布局中的行数publicvoidsetColumns(intcols)设置布局中的列数publicvoidsetHgap(inthgap)设置布局中组件之间的水平距离publicvoidsetVgap(intvgap)设置布局中组件之间的垂直距离第42页,课件共60页,创作于2023年2月16.6.4GridBagLayout管理器GridBagLayout布局管理器在GridLayout布局管理器的基础上提供了更加复杂的功能。采用GridBagLayout布局时,一个组件可以跨越多个行列放在多个网格内。另外,可以通过设定填充方式、间距等任意调整组件的大小和位置。GridBagLayout管理器的布局示意图如图16.53所示。第43页,课件共60页,创作于2023年2月16.6.4GridBagLayout管理器GridBagLayout类的构造方法与GridLayout类的构造方法基本相同,只是在GridLayout类基础上又增加了一些属性,如表16.8所示。新增属性属性描述intanchor指定组件在区域中放置的位置intfill指定组件填充方式intgridheight指定组件的高度,单位为网格个数intgridwidth指定组件的宽度,单位为网格个数intgridx指定组件的横向坐标,单位为网格个数intgridy指定组件的纵向坐标,单位为网格个数Insetsinsets指定组件与区域的间隔大小第44页,课件共60页,创作于2023年2月16.6.5CardLayout管理器CardLayout布局管理器用于将组件以卡片的形式进行布局。采用CardLayout布局,每张卡片属于不同的层次,并且充满整个容器。它将容器中的每个组件看作一张卡片。任何情况下,一次只能看到一张卡片,即一次只有一个组件可见。组件的顺序由组件对象本身在容器内部的顺序决定。CardLayout管理器的布局示意图如图16.55所示。第45页,课件共60页,创作于2023年2月16.6.5CardLayout管理器CardLayout类的主要构造方法如图16.56所示。CardLayout类提供了一些方法用来翻转该布局中的组件。具体方法及其描述如表16.9所示。方法方法描述publicvoidfirst(Containerparent)翻转到容器的第一张卡片publicvoidlast(Containerparent)翻转到容器的最后一张卡片publicvoidnext(Containerparent)翻转到指定容器的下一张卡片publicvoidprevious(Containerparent)翻转到指定容器的前一张卡片publicvoidsetHgap(inthgap)设置组件之间,以及组件与Container的边之间水平间隙publicvoidsetVgap(intvgap)设置组件之间,以及组件与Container的边之间垂直间隙publicintgetHgap()获得组件之间,以及组件与Container的边之间的水平间隙publicintgetVgap()获得组件之间,以及组件与Container的边之间的垂直间隙第46页,课件共60页,创作于2023年2月16.6.5CardLayout管理器我们可以单击“前一张卡片”按钮和“后一张卡片按钮”,发现实际显示在窗体的只能是一个按钮。且它们是按顺序排列的,如图16.58所示。第47页,课件共60页,创作于2023年2月16.6.6不使用布局管理器定位组件不同的布局管理器会将组件定位在不同的位置。但是,有些时候并不想使用指定的某个布局管理器对组件进行定位。而是想按照自己的设计对组件进行定位,这时我们可以使用setBounds()方法来完成这一任务。setBounds()方法的语法格式如图16.59所示。第48页,课件共60页,创作于2023年2月16.7Swing的事件处理前面几小节的主要内容是讨论组件的使用以及容器的布局,这些内容使Java图形用户界面的程序设计变得灵活方便,与图形界面程序密切相关的还有一个比较重要的内容——事件处理机制。第49页,课件共60页,创作于2023年2月16.7.1事件处理机制概述事件处理是图形界面与用户进行交互的重要内容。Java语言的事件处理机制包括事件源、事件、事件处理器三个主要的概念。首先需要为事件源注册相应的事件处理器,事件源产生指定事件后,事件处理器捕获后进行相应事件处理。其大致处理机制如图16.61所示。第50页,课件共60页,创作于2023年2月16.7.1事件处理机制概述以下是对三个概念的说明:事件源:产生事件的各种组件,如窗口、按钮、复选框等。事件:用户对事件源的各种操作动作。事件处理器:用于接收并处理事件的方法。在图形用户界面的程序中,用户的不同操作,如单击鼠标、移动鼠标、键盘输入等,会引发不同的事件类型,而不同的事件,需要相对应的事件监听器来监听并处理事件。在本节中就来讲解Java中有什么类型的事件,不同类型时间需要哪些特定类型事件监听器来处理。第51页,课件共60页,创作于2023年2月16.7.2事件监听器实现事件处理,首先要实现监听器接口,然后调用事件源对象中的方法来一个添加监听器对象。当事件发生后,事件源会调用监听器接口中的方法,通过将事件对象传递给相应的监听器方法来实现对事件的处理。第52页,课件共60页,创作于2023年2月16.7.2事件监听器每种事件类都有对应的事件监听器,它是事件监听器类的接口。各种事件类的接口描述如表16.10所示。事件类别描述信息接口名方法ActionEvent激活组件ActionListeneractionPerformed(ActionEvent)ItemEvent选择了某些项目ItemListeneritemStateChanged(ItemEvent)MouseEvent鼠标移动MouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)鼠标单击等MouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)KeyEvent键盘输入KeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)FocusEvent组件收到或失去焦点FocusListenerfocusGained(FocusEvent)focusLost(FocusEvent)WindowEvent窗口收到窗口级事件WindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)第53页,课件共60页,创作于2023年2月16.7.3焦点事件焦点事件类(FocusEvent)是指用户程序界面的组件焦点发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预算管理方案及执行控制-预算管理
- 买肥料送车合同范本
- 金属非金属矿山支柱作业岗位新员工试用期考核方案
- 个人分包安全协议书
- 高中生物实验设计与教学方案
- 客户关系管理CRM系统实施方案提升客户满意度增强客户粘性
- 代购猪肉协议书范本
- 中小学服务合同范本
- 12星座相处协议书
- 校企合作教学模式创新与实施方案
- 2025版慢性阻塞性肺病症状解读及护理技术
- 【12篇】新部编版小学语文六年级上册【课内外阅读理解专项训练(完整版)】及答案
- 2025版高考语文全程一轮复习第三部分语言文字运用任务群一基于真实情景的语用考查学案二专题分类研究集中突破考点考点一在具体语境中正确使用成语课件
- 建设工程企业资质管理规定2025
- 2025年全国消防安全知识竞赛题库及答案(完整版)
- 慢性肾脏病高磷血症临床管理中国专家共识(2025版)解读
- 2025年高速公路收费站车辆通行费收费员岗位职业技能资格知识考试笔试试题(含答案)
- 人才培养方案答辩汇报
- 2024年9月电工三级试题与答案
- 光大信用卡逾期协议书
- 2025及未来5年中国花卉肥市场调查、数据监测研究报告
评论
0/150
提交评论