版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习目标熟悉常用GUI组件的使用,能应用Swing组件实现桌面程序界面熟悉常用布局管理器,能选择恰当的局部管理器实现界面布局主要内容界面组件类界面布局管理菜单及菜单组件GUI界面设计GUI界面设计包括界面元素的创建和界面的布局。界面元素也叫组件,Java的界面组件类在java.awt包和javax.swing包里,主要有容器类组件、非容器类组件、菜单类组件等;界面的布局可以通过布局管理器类来实现,Java的布局管理器类位于java.awt包和javax.swing包,编程时可以根据需要选用不同的布局管理器。1.界面组件类—AWT组件窗体容器类FrameFrame是最常用的容器之一,它是Window类的派生类,利用它可以创建一个带有标题栏、可选菜单条、最小化和关闭按钮、有边界的标准窗口。一般把它作为图形用户界面的最外层的容器,它可以包含其它的容器或组件,但其它的容器不能包含它。Frame类的构造方法如下:Frame(),用于建立一个没有标题的窗口。Frame(Stringtitle),用于建立一个带title标题的窗口。1.界面组件类—AWT组件窗体容器类Frame(续)Frame下类常用的成员方法如表返回类型方法声明功能描述voidpublicComponentadd(Componentc)将组件c添加到容器上voidpublicvoidsetTitle(Stringtitle)将窗口的标题设置成titlevoidpublicvoidsetSize(intwidth,intheight)设置容器的大小,其中width和height分别表示窗口的宽和高,计算单位为像素voidpublicvoidsetBounds(inta,intb,intwidth,intheight)设置容器在屏幕上的位置和大小;其中(a,b)为容器在屏幕上的起始位置即左上角的坐标,默认是(0,0)。计算单位为像素voidpublicvoidsetResizeable(booleanb)设置容器是否可调整大小,默认是可调的voidpublicvoidsetVisible(booleanb)设置窗口是否可见,默认是不可见的1.界面组件类—AWT组件窗体容器类Frame(续)Frame窗体界面应用举例运行结果:1.界面组件类—AWT组件窗格容器类PanelPanel(窗格)是一个较为简单的容器。在它上边可以放置其它的图形用户界面组件,也可放置另一个Panel,即Panel中可以嵌套Panel。一般使用Panel把一些相关操作的组件组织起来,从而构建出操作简单、布局良好的用户界面来。
Panel类构造方法如下:Panel(),创建一个窗格,并使用默认的布局管理器FlowLayout摆放添加到窗格上的组件对象Panel(LayoutManagerlayout),创建一个窗格,并使用layout所指定的布局管理器摆放添加到窗格上的组件对象1.界面组件类—AWT组件窗格容器类Panel(续)Panel类常用方法1.界面组件类—AWT组件窗格容器类Panel(续)Panel窗格组件的应用注意:
Panel类本身并没有提供几个方法,但它继承了Container和Component类的所有可用的方法。需要时请查阅相关的JDK文档。importjava.awt.*;publicclassEx11_3extendsFrame{ publicstaticvoidmain(Stringargs[]){ Ex11_3frame=newEx11_3(); frame.setBounds(100,100,250,100);//设置窗口的大小和位置 frame.setTitle("Frame示例窗口");//设置窗口的标题 Panelp1=newPanel();//创建窗格对象p1 p1.setBackground(Color.blue);//设置p1对象的背景颜色为蓝色 p1.setSize(200,80);//设置p1对象的大小 Panelp2=newPanel();//创建窗格对象p2 p2.setBackground(Color.red);//设置p2的背景颜色为红色 p2.setSize(140,60);//设置p2对象的大小 frame.setLayout(null);//设置框架窗口的布局为null空布局 frame.add(p1);//将窗格对象p1添加到框架窗口上 p1.setLayout(null);//设置窗格对象p1的布局为null空布局 p1.add(p2);//将窗格对象p2添加到窗格p1上 frame.setVisible(true);//设置窗口是可见的 }}1.界面组件类—AWT组件标签组件类Label标签是一种只能显示文本的组件,不能被编辑。一般用作标识或提示信息Label构造方法如下:Label(),创建一个空的标签Label(Stringtext),创建一个标识内容为text的标签,text的内容左对齐显示Label(Stringtext,intalignment),创建一个标识内容为text的标签,text内容的显示对齐方式由alignment指定,alignment可以取类常数值1.界面组件类—AWT组件标签组件类Label(续)
Label类常用方法1.界面组件类—AWT组件标签组件类Label(续)
Label标签还提供了一些类常数,用于限定对齐方式的类常数如下1.界面组件类—AWT组件单行文本框组件类TextField单行文本框是最常用的一个组件,它可以接收用户从键盘输入的信息。TextField构造方法:TextField(),创建一个空的、系统默认宽度的文本框。TextField(intcolumns),创建一个空的并由columns指定宽度的文本框。TextField(Stringtext),创建一个具有text字符串内容的文本框。TextField(Stringtext,intcolumns),创建一个具有text字符串内容且宽度为columns的文本框1.界面组件类—AWT组件单行文本框组件类TextField(续)
TextField类常用方法1.界面组件类—AWT组件多行文本框组件类TextArea多行文本框呈现一个多行的矩形区域,用于编辑处理多行文本。TextArea构造方法TextArea(),创建一个空的多行文本框TextArea(introws,intcolumns),创建一个具有rows行columns列的空文本框TextArea(Stringtext),创建一个具有text字符串内容的文本框。1.界面组件类—AWT组件多行文本框组件类TextArea(续)
TextArea类常用方法1.界面组件类—AWT组件复选框组件类Checkbox和CheckboxGroup复选框Checkbox是一种可以多选的选择框。当有多个选项供用户选择时,可使用该组件类;若要实现单选框,则可以将多个Checkbox对象放在同一个CheckboxGroup组件组中Checkbox构造方法Checkbox(),创建一个无标识的复选框对象。Checkbox(Stringlabel),创建一个以字符串label为标识的复选框对象。Checkbox(Stringlabel,booleanstate),创建一个以字符串label为标识的复选框对象。若state为true,则初始状态为选中;否则未选中。1.界面组件类—AWT组件复选框组件类Checkbox和CheckboxGroup(续)
Checkbox类常用方法注意:CheckboxGroup不是可视组件,我们看不见,它用来将Checkbox组件组合在一起,实现单选操作。
返回类型方法声明功能描述StringgetLabel()获得对象标识booleangetState()获得对象选中或未选中状态CheckboxGroupgetCheckboxGroup()获得对象所属的组voidsetLabel(Stringlabel)设置对象的标识voidsetState(booleanstate)设置对象的状态voidsetCheckboxGroup(CheckboxGroupg)将对象加入g组中1.界面组件类—AWT组件选择菜单组件类ChoiceChoice类可用来构建一个弹出式选择项菜单。Choice构造方法:Choice(),构建一个弹出式选择项菜单对象Choice类常用方法:返回类型方法声明功能描述voidadd(Stringitem)在菜单中添加一项(item)。voidinsert(Stringitem,intindex)在菜单中index所指位置处插入item项。index为0时,表示菜单中的第一项位置;为1时,表示第二项位置;依次类推。voidremove(Stringitem)在菜单中移去item项。StringgetItem(intindex)获得index指定位置的项。intgetItemCount()获得菜单中的项目总数。intgetSelectedIndex()获取当前选中项的位置数。voidremoveAll()移去菜单中所有的选项。1.界面组件类—AWT组件列表组件类List列表也称为滚动列表,与选择菜单相同的是List类也用来创建一个用户的选项列表;不同的是选择菜单只可单选,而列表既可单选也可多选。当加入表中的选项超过组件所能显示的范围时,系统会自动添加滚动条,用户可以滚动查看并选择。List构造方法:List(),创建一个只可单选的列表对象。系统默认在列表框内显示4个选项,要查看其他的选项,可拖拉滚动条;List(introw),创建一个只可单选的列表对象。row指定列表框内可见的选项数目1.界面组件类—AWT组件列表组件类List(续)List类常用方法返回类型方法声明功能描述voidadd(Stringitem)在列表的最后添加一项(item)voidadd(Stringitem,intindex)在表中的index指定的位置添加item项。index的值为0时,表示第一个位置StringgetItem(intindex)。获取表中由index指定的选项intgetItemCount()获取表中项目的总数String[]getItems()将表中所有的选项存放到一个字符串数组中intgetSelectedIndex()获取当前选中项的位置。如果没有选中项或选中项多于一个,则返回-1int[]getSelectedIndex()将所有选中项的位置放到一个整数数组里StringgetSelectedItem()获取当前的选中项。如果没有选中项或选中项多于一个,则返回nullString[]getSelectedItems()将所有选中项放到一个字符串数组里booleanisIndexSelected(intindex)查看index指定位置的项是否被选中booleanisMultipleMode()查看该列表对象是否允许多。1.界面组件类—AWT组件按钮组件类ButtonButton是构建用户界面最常用的普通组件。经常使用它去完成一系列的行为操作。Button构造方法:Button(),构造一个无标识的按钮对象。Button(Stringlabel),构造一个以label为标识的按钮对象。1.界面组件类—AWT组件按钮组件类Button(续)
Button类常用方法返回类型方法声明功能描述voidsetLabel(Stringlabel)设置对象标识StringgetLabel()获得对象标识voidaddActionListener(ActionListenerlisten)以listen注册按钮的监听者对象1.界面组件类—Swing组件第二代的GUI界面组件,在AWT的基础上有了很多改进,如不依赖于本地、属于轻量级组件,可跨平台等,Swing组件包含在javax.swing包中;很多swing组件在awt中对应存在,使用方法也很相似,swing组件类绝大部分都是以“J”开头,如JButton、JFrame、JWindow、JApplet、JDialog等等;所有的Swing组件都从容器类Container派生而来,也就是说,所有的Swing组件都是容器,都可以容纳其他组件。1.界面组件类—Swing组件JFrame类JFrame类其实是Frame的派生类,它是一个顶级的窗口屏幕。JFrame类与Frame轻微不兼容。与其他所有JFC/Swing顶层容器一样,JFrame包含一个JRootPane作为其唯一的子容器。根据规定,该根窗格所提供的内容窗格应该包含JFrame所显示的所有非菜单组件。这不同于AWTFrame。JFrame构造方法:JFrame(),构造一个初始时不可见的新窗体。JFrame(GraphicsConfigurationgc),以屏幕设备的指定GraphicsConfiguration和空白标题创建一个Frame。JFrame(Stringtitle),创建一个新的、初始不可见的、具有指定标题的Frame1.界面组件类—Swing组件JFrame类(续)JFrame类常用方法返回类型方法声明功能描述ContainergetContentPane()返回此窗体的
contentPane对象GraphicsgetGraphics()为组件创建一个图形上下文JMenuBargetJMenuBar()返回此窗体上设置的菜单栏voidsetDefaultCloseOperation(intoperation)设置用户在此窗体上发起
"close"时默认执行的操作voidsetJMenuBar(JMenuBarmenubar)设置此窗体的菜单栏voidsetLayout(LayoutManagermanager)设置
LayoutManagervoidupdate(Graphicsg)只是调用
paint(g)1.界面组件类—Swing组件JPanel类JPanel是swing中的面板容器类,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,可包含其他组件(component),如JButton、JTextArea、JTextField等,功能是对对窗体上的这些控件进行组合。JPanel构造方法:JPanel(),创建具有双缓冲和流布局的新JPanel。JPanel(booleanisDoubleBuffered),创建具有FlowLayout和指定缓冲策略的新JPanel。JPanel(LayoutManagerlayout),创建具有指定布局管理器的新缓冲JPanel。JPanel(LayoutManagerlayout,booleanisDoubleBuffered),创建具有指定布局管理器和缓冲策略的新JPanel。1.界面组件类—Swing组件JPanel类(续)JPanel类常用方法返回类型方法声明功能描述AccessibleContextgetAccessibleContext()获取与此
JPanel关联的
AccessibleContextPanelUIgetUI()返回呈现此组件的外观
(L&F)对象StringgetUIClassID()返回指定呈现此组件的
L&F类名的字符串voidupdateUI()利用当前外观的值重置
UI属性1.界面组件类—Swing组件【例11-4】获取顶层容器JFrame内的面板示例这段代码主要是为同学们介绍如何在一个顶层容器内获取一个面板,也可以说是在顶层容器内产生一个默认的内容面板。1.界面组件类—Swing组件JLabel类JLabel对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐、只显示文本的标签是开始边对齐、而只显示图像的标签则水平居中对齐。还可以指定文本相对于图像的位置。默认情况下,文本位于图像的结尾边上,文本和图像都垂直对齐的。JLabel构造方法:JLabel(),创建无图像并且其标题为空字符串的JLabel。JLabel(Iconimage),创建具有指定图像的JLabel实例。JLabel(Stringtext),创建具有指定文本的JLabel实例。1.界面组件类—Swing组件JLabel类(续)JLabel类常用方法返回类型方法声明功能描述AccessibleContextgetAccessibleContext()获得此对象的
AccessibleContextIcongetDisabledIcon()返回该标签被禁用时所使用的图标IcongetIcon()返回该标签显示的图形图像(字形、图标)StringgetText()返回该标签所显示的文本字符串protectedStringparamString()返回此
JLabel的字符串表示形式voidsetText(Stringtext)定义此组件将要显示的单行文本voidsetVerticalTextPosition(inttextPosition)设置标签的文本相对其图像的垂直位置voidsetHorizontalTextPosition(inttextPosition)设置标签的文本相对其图像的水平位置1.界面组件类—Swing组件【例11-5】使用JLabel创建标签的示例这段代码主要是为读者展示了创建标签的方法,并且通过在构造器中为标签初始赋值。1.界面组件类—Swing组件JButton类JButton是继承AbstractButton类而来,而AbstractButton本身是一个抽象类,里面定义了许多组件设置的方法与组件事件驱动方法(Eventhandle),如addActionListener()、setText等,是非常重要的一个类。JButton构造方法JButton(),创建不带有设置文本或图标的按钮。JButton(Actiona),创建一个按钮,其属性从所提供的Action中获取。JButton(Iconicon),创建一个带图标的按钮。JButton(Stringtext),创建一个带文本的按钮。JButton(Stringtext,Iconicon),创建一个带初始文本和图标的按钮1.界面组件类—Swing组件JButton类(续)JButton类常用方法返回类型方法声明功能描述AccessibleContextgetAccessibleContext()获取与此
JButton关联的
AccessibleContextprotectedStringparamString()返回此
JButton的字符串表示形式1.界面组件类—Swing组件【例11-6】JButton的使用1.界面组件类—Swing组件JRadioButton类JRadioButton用来实现单选按钮。与List有相似之处JRadioButton构造方法JRadioButton(),创建一个初始化为未选择的单选按钮,其文本未设定。JRadioButton(Actiona),创建一个单选按钮,其属性来自提供的Action。JRadioButton(Iconicon),创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本。JRadioButton(Stringtext),创建一个具有指定文本的状态为未选择的单选按钮1.界面组件类—Swing组件JRadioButton类JRadioButton类常用方法返回类型方法声明功能描述AccessibleContextgetAccessibleContext()获取与此
JRadioButton相关联的
AccessibleContextStringgetUIClassID()返回呈现此组件的
L&F类的名称protectedStringparamString()返回此
JRadioButton的字符串表示形式voidupdateUI()将
UI属性重置为当前外观对应的值1.界面组件类—Swing组件【例11-7】使用JRadioButton创建单选按钮组这段代码主要是为同学们展示如何创建单选按钮组件,以及将它们放在不同的按钮组中2.界面布局管理
编写GUI程序时,可以通过使用布局管理器来实现对用户界面上的界面元素进行布局控制Java提供了多种布局管理器组件
BorderLayoutCardLayoutFlowLayoutGridLayoutGridBagLayout2.界面布局管理
BorderLayout布局管理器BorderLayout是一种简单的布局管理器,它将容器划分为东、西、南、北、中5个区域。当容器使用该布局时,每次添加组件都要指明把它放在哪个区域。它是Frame容器默认的布局管理器BorderLayout构造方法BorderLayout(),构造一个组件之间没有间距的新边框布局。BorderLayout(inthgap,intvgap),构造一个具有指定组件间距的边框布局。2.界面布局管理
BorderLayout布局管理器(续)以下BorderLayout类常数用于指定组件在容器中的摆放位置EAST其值为"East",摆放在右边(东)。WEST其值为"West",摆放在左边(西)。SOUTH其值为"South",摆放在底部(南)。NORTH其值为"North",摆放在顶部(北)。CENTER其值为"Center",摆放在中部。2.界面布局管理
【例11-8】使用BorderLayout实现界面布局2.界面布局管理
CardLayout布局管理器CardLayout是将加入到容器中的各个组件作为卡片而摆放到一个“卡片盒”中。只能看到最上面的卡片(组件),它占据容器的整个空间。要想查看其他的卡片,只有将它从盒中移到上面来构造方法CardLayout(),创建一个间距大小为0的新卡片布局。CardLayout(inthgap,intvgap),创建一个具有指定水平间距和垂直间距的新卡片布局。2.界面布局管理
CardLayout布局管理器(续)CardLayout类常用方法返回类型方法声明功能描述voidaddLayoutComponent(Componentcomp,Objectconstraints)将指定的组件添加到此卡片布局的内部名称表intgetHgap()获取组件之间的水平间距floatgetLayoutAlignmentX(Containerparent)返回沿
x轴的对齐方式floatgetLayoutAlignmentY(Containerparent)返回沿
y轴的对齐方式intgetVgap()获取组件之间的垂直间距StringtoString()返回此卡片布局状态的字符串表示形式2.界面布局管理
【例11-9】使用CardLayout实现界面布局2.界面布局管理
FlowLayout布局管理器FlowLayout也称为流布局,是最基本的布局管理器,它是Panel、Applet等容器默认的布局管理器。添加到容器上的各个组件按照它们被添加的顺序从左到右依次排列,一行摆满后,就自动转到下一行继续摆放。构造方法FlowLayout(),构造一个新的FlowLayout,它是居中对齐的,默认的水平和垂直间隙是5个单位。FlowLayout(intalign),构造一个新的FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是5个单位。FlowLayout(intalign,inthgap,intvgap),创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。2.界面布局管理
【例11-10】使用FlowLayout及BorderLayout实现界面布局2.界面布局管理
GridLayout布局管理器GridLayout布局管理器将容器划分成m行n列的网格,添加到容器中的组件按行列顺序被依次放置到每个网格中。网格的大小是一样的,因此,被放在网格中组件的大小也是一样的GridLayout构造方法GridLayout(),创建具有默认值的网格布局,即每个组件占据一行一列。GridLayout(introws,intcols),创建具有指定行数和列数的网格布局。GridLayout(introws,intcols,inthgap,intvgap),创建具有指定行数和列数的网格布局。2.界面布局管理
【例11-11】使用GridLayout实现界面布局每行摆放3个组件,每个组件所占空间的大小是一样的2.界面布局管理
GridBagLayout布局管理器GridBagLayout是最灵活布局管理器,它不要求组件的大小相同即可将组件竖向和横向对齐。每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联。它利用GridBagConstraints对象的功能来设置每个组件的大小和位置,因此,可以使组件的布局更加自由。GridBagLayout构造方法GridBagLayout(),创建网格包布局管理器2.界面布局管理
【例11-12】使用GridBagLayout实现界面布局3.菜单及菜单组件
菜单是常见的用户界面,在java.awt和javax.swing类包中都提供了菜单组件菜单系统由菜单栏、菜单和菜单项组成一个菜单栏可包含多个菜单,一个菜单可包含多个菜单项。在Java中创建一个菜单应用的步骤:创建一个菜单栏(MenuBar);在菜单栏上创建各个菜单(Menu);为每个菜单创建各个菜单项(MenuItem)3.菜单及菜单组件
菜单栏(JMenuBar)
菜单栏用来组织菜单。只能在用户界面上放置一个菜单栏。JMenuBar构造方法JMenuBar(),创建新的菜单栏JMenuBar类常用方法返回类型方法声明功能描述JMenuadd(JMenuc)将指定的菜单追加到菜单栏的末尾ComponentgetComponent()实现为
MenuElementintgetComponentIndex(Componentc)返回指定组件的索引booleanisSelected()如果当前已选择了菜单栏的组件,则返回
trueprotectedString
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高校知识产权保护措施
- 2026年高中教师资格证笔试模拟试卷
- 2026年物流公司知识产权保护措施方案
- 2026年中国考研英语预测题
- 2026年公务员考试行测500题及解析
- 护理评估技巧
- 2026年测试开发工程师中级笔试题
- 2026年人力资源管理师高级考试预测卷
- 2026年销售专员招聘笔试模拟题
- 基础护理中的伦理决策与问题解决
- 2026中国氢能源基础设施建设与政策支持分析报告
- 2025年河北省石家庄市八年级地生会考考试试题及答案
- 交叉作业审批制度
- 初中八年级英语下册 Unit 7 Natural Disasters 写作提升课:灾害事件报道与个人经历叙述教案
- TSG 31-2025工业管道安全技术规程
- 2026年离婚登记申请书
- 中型水库管理岗位责任制度
- 2026年人形机器人(Optimus类)项目商业计划书
- 2026中国新闻社招聘应届高校毕业生11人考试参考试题及答案解析
- 火花探测检查制度规范
- DB41∕T 2877-2025 道路深层病害高聚物注浆处治技术规范
评论
0/150
提交评论