衡阳技师学院信息技术系项目二GUI编程技术主讲:尹友明网络与软件教研室本章学习导航网络与软件教研室本章学习要点JavaGUI概述常用容器常用GUI组件高级GUI组件常用布局管理器Java事件处理教学课时:16课时网络与软件教研室5.1JavaGUI概述图形用户界面(GraphicsUserInterface,简称GUI)就是为应用程序提供一个图形化的界面,方便用户和应用程序实现友好的交互。CUI和GUI网络与软件教研室5.1.1JFC简介&5.1.2AWT简介JFC(JavaFoundationClasses,Java基础类)是一个图形框架AWT(AbstractWindowToolkit)是Java提供的建立图形用户界面GUI的工具集JFC网络与软件教研室5.1.2AWT简介java.awt.Component类是许多组件类(如Button和Label)的父类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性。Component类常用方法网络与软件教研室5.1.3SWING简介Swing是Java语言在编写图形用户界面方面的新技术,Swing采用MVC(模型—视图—控制)设计范式,Swing可以使Java程序在同一个平台上运行时能够有不同外观以供用户选择。JFC网络与软件教研室5.1.4SWT简介SWT(StandardWidgetToolkit)最初是由IBM开发的一套用于Java图形用户界面系统,用来与Swing竞争。后来Eclipse组织为了开发EclipseIDE环境编写的一组底层图形界面API成了SWT的主要内容。SWT简介(1)根据需要添加容器。(2)将组件添加到指定容器。(3)通过布局管理器对容器中的组件进行组织排列。(4)响应用户对组件的操作即事件的处理。Java图形界面设计一般过程网络与软件教研室5.1.5Java图形界面设计一般过程组件是图形用户界面最基本的组成部分;组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象;组件不能独立显示出来,必须将组件放在一定的容器中才可以显示出来。组件容器类Container是Component的一个子类;容器本身也是一个组件,具有组件的所有性质;容器还具有放置其它组件和容器的功能。容器布局管理器用来管理组件放置在容器中的位置和大小;每个容器都有一个布局管理器;使用布局管理器可以使java生成的图形用户界面具有平台无关性;布局管理器LayoutManager本身是一个接口,通常使用的是实现了该接口的类。布局管理器网络与软件教研室5.2.1框架框架是图形用户界面最基本的部分,框架是带有标题和边界的顶层窗口,框架的大小包括边界指定的所有区域,框架的默认布局为BorderLayout。构造方法网络与软件教研室5.2.1框架常用方法【例5-1】创建简单JFrame(Demo5_1.java)网络与软件教研室5.2.2面板面板是最简单的容器类,应用程序可以将其他组件放在面板提供的空间内,这些组件也可以包括其他面板。与框架不同,面板是一种透明的容器,既没有标题,也没有边框,就像一块透明的玻璃。面板不能作为最外层的容器单独存在,它首先必须作为一个组件放置到其它容器(一般为框架)中,然后把组件添加到它里面。JPanel【例5-2】应用JPanel分割JFrame(Demo5_2.java)网络与软件教研室5.2.3小程序JavaApplet是用Java语言编写的一些小应用程序,这些程序直接嵌入到页面中,由支持Java的浏览器(IE或Nescape)解释执行。Applet的下载和执行由浏览器自动完成。Applet支持客户端与Web服务器的交互,具有动态执行能力。Applet的执行速度不受网络速度的限制。Applet网络与软件教研室5.2.4Swing容器Swing中的容器除了上述的JFrame、JPanel和JApplet外,还包括其它的容器,这些容器的名称和功能见表5-5。Swing容器网络与软件教研室(1)容器是一个抽象的概念,请借助于生活中的实例进行理解。(2)可以通过阅读英文的API文档或汉化的API文档了解常用GUI类。操作提示(1)创建一个框架frmMain,名称为“框架演示”,大小为400X300,位置为(200,200)。(2)创建四个面板pnlMain、pnlFirst、pnlSecond和pnlThird,将pnlMain设置为框架的内容面板,然后将pnlFirst、pnlSecond和pnlThird三个面板添加其中,并通过设置不同的颜色来区分不同的面板。参考界面如图5-7所示。(3)查阅JavaAPI,了解Swing包和AWT的类层次关系。操作要求网络与软件教研室5.3.1标签和按钮JLabel构造方法标签提供了一种在应用程序界面中显示不可修改文本的方法。标签缺省文本对齐方式是左对齐。网络与软件教研室5.3.1标签和按钮JLabel常用方法网络与软件教研室5.3.1标签和按钮按钮构造方法和常用方法按钮是用于触发特定动作的组件,用户可以根据需要创建纯文本的或带图标的按钮。网络与软件教研室5.3.1标签和按钮标签和按钮应用实例【例5-3】应用标签和按钮构造图形用户界面(Demo5_3.java)网络与软件教研室框架、面板与组件的关系框架面板按钮网络与软件教研室5.3.2单行文本框和多行文本框JTextField构造方法文本框显示指定文本并允许用户编辑文本,用户可以通过文本框来实现输入、错误检查之类的功能。网络与软件教研室5.3.2单行文本框和多行文本框JTextField常用方法网络与软件教研室5.3.2单行文本框和多行文本框JPasswordField构造方法和常用方法密码框(JPasswordFiled)表示可编辑的单行文本的密码文本组件。网络与软件教研室5.3.2单行文本框和多行文本框JTextArea构造方法和常用方法Swing中的JTextArea类和AWT中的TextArea类都表示可编辑的多行文本组件。网络与软件教研室5.3.2单行文本框和多行文本框文本框和密码框应用实例【例5-4】应用标签、文本框、密码框、按钮等组件构建用户登录界面(Demo5_4.java)网络与软件教研室(1)注意图片文件的类型和路径的使用。(2)注意基本组件、内容容器和顶层容器之间的关系。操作提示(1)通过继承JFrame的方式创建框架类MyFrame和框架对象mf。(2)创建三个标签(其中一个为图片标签)、两个文本框、一个密码框、两个按钮(文字图片按钮)的登录服务器界面(参考界面如图5-10所示)。(3)合理设置框架的大小等属性,将组件添加到框架上。(4)通过MyFrame类的构造方法完成框架的创建。操作要求网络与软件教研室5.3.3复选框和单选按钮单选按钮可以让用户进行选择或取消选择,与复选按钮可以选择多个选项不同,单选按钮每次只能选择其中一个选项。JRadioButton对象与ButtonGroup对象配合使用可创建一组按钮,保证一次只能选择其中的一个按钮。JRadioButton网络与软件教研室5.3.3复选框和单选按钮复选框(JCheckbox)允许用户在多种选择中选择一个或多个选项。是一个可处于“开”(true)或“关”(false)状态的图形组件。JCheckBox网络与软件教研室5.3.4列表框和组合框列表框显示一系列的选项,用户可以从中选择一项或多项。列表框支持滚动条,可以浏览多项。JList网络与软件教研室5.3.4列表框和组合框组合框的功能类似于列表框,但与列表框只能选择不同,组合框还提供一个文本框以进行文本的编辑。JComboBox网络与软件教研室单选钮、复选框、列表框和组合框应用实例应用实例【例5-5】应用单选钮、复选框、列表框、组合框等构建字体设置器界面(Demo5_5.java)网络与软件教研室(1)性别默认选择“男”。(2)组合框中的年龄通过一个For循环得到列表数据。操作提示(1)创建用户注册界面(参考界面如图5-12所示)。(2)将“爱好”归为一组。(3)组合框可输入也可选择,可供选择的年龄为16至90之间。操作要求网络与软件教研室5.3.5菜单和工具栏Swing中使用JMenuBar类实现菜单栏,通过将菜单(JMenu)对象添加到菜单栏(JMenuBar)可以构造应用程序菜单。菜单栏(MenuBar)网络与软件教研室5.3.5菜单和工具栏菜单(JMenu)是一个包含菜单项(JMenuItem)的弹出窗口,用户选择菜单栏(JMenuBar)上的项时会显示该菜单项(JMenuItem)。下拉菜单(JMenu)网络与软件教研室5.3.5菜单和工具栏JMenuItem用来实现菜单中的选项。菜单项本质上是位于列表中的按钮,当用户选择“按钮”时,将执行与菜单项关联的操作。菜单项(JMenuItem)网络与软件教研室5.3.5菜单和工具栏工具栏是窗口中提供的一种快捷操作的功能区,可以通过工具栏上的按钮,得到快捷的功能。工具栏(JToolbar)网络与软件教研室菜单和工具栏应用实例应用实例【例5-6】应用菜单和工具栏构建记事本主界面(Demo5_6.java)网络与软件教研室(1)可以参考Windows系统下的“写字板”的界面。(2)注意工具栏按钮图标文件的路径。操作提示(1)创建写字板的菜单和工具栏界面(参考界面如图5-14所示)。(2)创建“文件”、“编辑”、“查看”、“插入”、“格式”和“帮助”菜单。(3)在“格式”菜单下,创建菜单项。(4)创建“新建”、“打开”、“保存”、“打印”和“预览”的工具栏按钮。操作要求网络与软件教研室5.4.1对话框Java桌面程序中的简单的对话框可以使用Swing中的JOptionPane类来实现,JOptionPane类中使用showXXXDialog方法实现不同类型的对话框。JOptionPane类型网络与软件教研室5.4.1对话框JOptionPane操作按钮类型和返回值类型网络与软件教研室5.4.2表格JTable用来显示和编辑规则的二维单元表。设计使用JTable的应用程序时,要严格注意用来表示表数据的数据结构。JTable使用唯一的整数来引用它所显示的模型的行和列。表格概述网络与软件教研室5.4.2表格应用JTable时,常常要用到AbstractTableModel类常用方法AbstractTableModel类网络与软件教研室表格应用实例应用实例【例5-7】应用表格显示学生详细信息(Demo5_7.java)网络与软件教研室5.4.3树使用JTree类,可以构造树状图展现一个层次关系分明的一组数据,给用户一个直观而易用的感觉。树型组件概述网络与软件教研室树型组件应用实例应用实例【例5-8】应用树型结构显示学校专业汇总信息(Demo5_8.java)网络与软件教研室(1)树型结构和表格的布局不要求十分精确。(2)树型结构的结点前面不需要加图标。操作提示(1)创建类似于Windows系统中的计算机管理的操作界面(参考界面如图5-18所示)。(2)使用两个面板分别放置树型结构和表格。操作要求网络与软件教研室5.5.1流式布局为了保持组件的平台独立性,Java引入了布局管理器来控制组件的布局。FlowLayout(流布局)是Panel和Applet的默认布局管理器。在FlowLayout中,组件在容器中按照从上到下,从左到右的顺序进行排列,如果当前行放置不下,则换行放置。概述网络与软件教研室5.5.2网格布局GridLayout(网格布局)布局管理器使容器中各个组件呈网格状布局,平均占据容器的空间。概述网络与软件教研室5.5.3边界布局BorderLayout(边界布局)是Window、Frame和Dialog的缺省布局管理器。BorderLayout布局管理器把容器分成North、South、East、West和Center共5个区