版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.1项目概述本项日为JavaGUI实现。返回6.2项目目的·掌握图形用户界面实现的基本原理和方法。.掌握Java语言中图形用户界面程序的编写。.了解Java语言中图形用户界面的构造与设计。返回6.3项目支撑知识抽象窗口工具包AWT(AbstractWindowToolkit)是API为Java程序提供的建立图形用户界面GUI的工具集,AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括用户界面组件、事件处理模型、图形和图像工具、布局管理器等。6.3.1项目支撑知识AWT图形用户界面设计下一页返回6.3项目支撑知识Java.awt包中提供了GUI设计所使用的类和接口,提供了基本的Java程序的GUI图形用户界面设计的工具,如图6-1所示AWT图形用户界面设计主要类之间的关系。6.3.2项目支撑知识2AWT类AWT根据类的层次定义窗口,并在每一层添加了特定的功能。在这些窗口中,用得最普遍的是在小应用程序派生于Panel类的窗口和派生于Frame类的独立窗口。这些窗口的功能大多数来自于它们的父类。上一页下一页返回6.3项目支撑知识组件(Component)Component类是许多组件类的父类,是一个封装了组件通用的方法和属性的抽象类。在屏幕上显示的所有用于用户交互的用户界面元素都是Component类的子类。这个类定义了组件通用的属性和一百多个用于事件管理的公共方法,属如组件大小、显示位置、前景色和背景色、边界、可见性等,事件包括鼠标或键盘的输入,窗口位置或大小的改变以及重绘窗口等。2.容器(Container)上一页下一页返回6.3项目支撑知识Container类是Component类的子类。容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其他组件和容器。Container类有一些附加方法,允许别的Component对象嵌套在Container类的对象中。当然,其他的Container对象可以被存放在一个Container对象中,这就形成了一个多层包容机制。为了使生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器(LayoutManager)来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。上一页下一页返回6.3项目支撑知识3.面板(Panel)Panel类是Container类的一个具体的子类。它没有添加任何新的方法,只是简单地实现了Container类。一个Panel对象可以被看作是一个递归嵌套的具体的屏幕组件。Panel类是Appler类的子类。当屏幕输出直接传递给一个小应用程序时,它将在一个Panel对象的表面被画出。实际上,一个Panel对象是一个不包含标题栏、菜单栏以及边枢的窗口。这就是为什么在浏览器中运行一个小应用程序时,看不见标题栏、菜单栏以及边枢的原因。而当用小应用程序查看器来运行一个小应用程序时,小应用程序查看器提供了标题和边枢。上一页下一页返回上一页6.3项目支撑知识其他的组件可以通过调用Panel类的add()方法被加入到一个Panel对象中,这个方法是从Container类继承来的。一旦这些组件被加入,通常就可以通过调用在Component类中定义了的setLocation(),SetSize()以及setBounds()方法来改变这些组件的位置和大小。4.窗口(Window)窗口类产生一个顶级窗口(Window)。顶级窗口不包含在任何别的对象中它直接出现在桌面上。通常,不会直接产生Window对象,而使用Window类的子类Frame类。下一页返回6.3项目支撑知识5.框架(Frame)Frame类封装了窗口通常所需要的一切组件,它是Window类的子类,并且拥有标题栏、菜单栏、边框以及可以调整大小的角。如果在一个小应用程序中创建了一个Frame对象,它将包含一个例如“JavaAppletWindow”的警告消息给用户,表示一个小应用程序窗口已经被创建。这个消息警告用户,他们看见的窗口是由小应用程序启动的,而不是被运行在他们机器上的软件所启动(一个伪装基于主机的应用程序的小应用程序将可以用于在用户不知道的情况下获得密码和其他敏感信息)。当一个Frame窗口被程序而不是小应用程序创建时,就创建了一个涌常的窗口。上一页下一页返回6.3项目支撑知识6.画布(Canvas)虽然画布不是小应用程序和Frame窗口的层次结构的一部分,但是Canvas这种类型的窗口是很有用的(Canvas类封装了一个可以用来绘制的空自窗口。)6.3.3项目支撑知识3事件处理概述在设计和实现用户界面的过程中,主要是完成两个任务:第一是创建窗口并在窗口中添加各种组件,指定组件的属性和在窗口中的位置,从而构成图形界面的外观效果;第二是设置各种组件对不同事件的响应,从而实现图形用户的交互。上一页下一页返回6.3项目支撑知识事件处理就是对按钮单击、鼠标移动等情况作出反应的过程。在事件处理的过程中,主要涉及三类对象。事件(Event)就是用户对图形界面操作的描述,以类的形式出现,如键盘操作对应的事件类就是Keyevent。事件源(EventSource)就是事件发生的场所,通常就是各个组件,例如按钮Button。事件处理者(Eventhandler)就是接收事件对象并对其进行处理的对象。当用户做某些事情(例如单击鼠标),系统将创建一个相应表达该动作的事件,并传送该事件给程序中的事件处理代码(该代码决定了怎样处理事件),以便让用户得到相应的回应。如图6-2所示AWT事件传递和处理机制。上一页下一页返回6.3项目支撑知识例如,如果用户用鼠标单击了按钮对象button,则该按钮button就是事件源,而Java运行时系统会生成ActionEvent类的对象actionE,该对象中描述了该单击事件发生时的一些信息,然后,事件处理者对象将接收由Java运行时系统传递过来的事件对象actionE并进行相应的处理。图形用户界面的每个可能产生事件的组件被称为事件源,不同事件源上发生的事件的种类不同。事件类的层次结构如图6-3所示。上一页下一页返回6.3项目支撑知识如果希望事件源上发生的事件被程序处理,就要把事件源注册给能够处理该事件源上那种类型事件的监听者。监听者之所以具有监听和处理某类事件的功能,是因为它实现了有关的接口,所以监听者需要对它所实现的接口的所有抽象方法写出具体的方法体,对应事件源上发生的事件的处理代码就写在这些方法体里。理解AWT中事件的处理是重要的,没有事件,应用程序就无法响应用户的活动。Java语言中存在各种不同类型的事件类用来描述各种类型的用户交互。上一页下一页返回6.3项目支撑知识在Java语言的事件处理机制中,不同的事件由不同的监听者处理,所以Java.awt.event包中还定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。一般来说,每个事件类都有一个监听者接口与之相对应,每个接口还要求定义一个或多个方法。当发生特定的事件时,就会调用这些方法。表6-1列出了这些(事件)类型,并给出了每个类型对应的接口名称,以及所要求定义的方法。从表6-1中不难看,ActionEvent类事件对应的接口是ActionListener,这个接口定义了抽象方法为publicvoidactionPerformed(ActionEvent)。上一页下一页返回6.3项目支撑知识凡是要处理ActionEvent事件的类都必须实现ActionListener接口,实现ActionListener接口就必须重载上述的actionPerformed()方法,在重载的方法体中,通常需要调用参数c的有关方法。6.3.4项目支撑知识4AWT控件控件(controls)是允许用户和应用程序用各种方式进行交互的组件,AWT支持的控件有标签、按钮、复选枢、选择列表、列表枢、滚动条、文本枢等,这些控件都是Component类的子类。上一页下一页返回6.3项目支撑知识1.标签标签是用户不能修改只能查看其内容的文本显示区域,它起到信息说明的作用,每个标签用一个Label类的对象表示。Label提供的构造方法如下:Label()Label(Stringtext)Label(stringtext,intalignment)其中,text为标签上显示的文本,alignment是对齐方式,有3个值:CENTER、LEFT、RIGHT。上一页下一页返回6.3项目支撑知识如果希望修改标签上显示的文本,则可以使用Label对象的方法setText()。同样,可以通过调用Label对象的getText()方法来获得它的文本内容。例如,下面的程序段将修改标签中的文本内容:上一页下一页返回6.3项目支撑知识由于标签不能接收用户的输入,所以不能引发事件。它不是事件源。2.按钮按钮是图形用户界面中非常重要的一种组件,它一般对应一个事先定义好的功能操作,并对应一段程序。当用户单击按钮时,系统自动执行与该按钮相关联的程序,从而完成预先指定的功能。Button提供的构造方法如下:Button()Button(Stringtext)//制定了按钮上的标签文字上一页下一页返回6.3项目支撑知识调用按钮的getLabel()方法可以返回按钮上标签字符串;调用按钮的setLabel()方法可以修改按钮的标签字符串。按钮可以引发动作事件,当用户单击一个按钮时会引发一个动作事件。如果希望响应按钮引发的动作事件的程序,必须把按钮注册给实现了ActionListener接口的动作事件监听者,同时,为这个接口的actionPerformed(ActionEvente)方法书写方法体。在方法体中,可以调用e.getSource()方法来获取引发动作事件的按钮对象,也可以调用e.getActionCommand()方法来获取按钮的标签或事先为这个按钮设置的命令名。上一页下一页返回6.3项目支撑知识ActionEvent类只包含一个事件,即执行动作事件ACTION-PERFORMED。它是由某个动作引发的执行事件。能够触发这个事件的动作包括:(1)单击按钮;(2)双击一个列表中的选项;(3)选择菜单项;(4)在文本枢中输入内容后回车。ActionEvent类的主要方法有:(1)publicStringgetActionCommand()上一页下一页返回6.3项目支撑知识这个方法返回引发事件的动作的命令名,这个命令名可以通过调用setActionCommand()方法指定给事件源组件,也可以使用事件源的默认命令名。(2)publicintgetModifiers()如果发生动作事件的同时用户还按了Ctrl,Shift等功能键,则可以调用这个事件的getModifiers()方法来获得和区分这些功能键,实际上就是把一个动作事件再细分成几个事件;把一个命令细分成几个命令。将getModifiers()方法的返回值与ActionEvent类的几个静态常量ALTMASK,CTRLMASK,SHIFTMASK,METAMASK相比较,就可以判断用户按下了哪个功能键。上一页下一页返回6.3项目支撑知识3.文本框与文本区文本组件(TextComponent)类是用于编辑文本的组件,此类包括了文本枢(TextField)和多行文本区域(TextArea)两种子类。(1)TextField类。TextField类用于编辑单行文本,它只有一行。TextField类提供了多种构造方法,用于创建文本枢组件的对象。常见的构造方法的使用如下:上一页下一页返回6.3项目支撑知识其中text为文本枢中初始字符串,columns为文本枢容纳字符的个数。例如,使用textFieldtext1=newtextField(18)创建了一个能容纳18个字符的文本框。(2)TextArea类上一页下一页返回6.3项目支撑知识TextArea类提供可以编辑或显示多行文本的区域,并且在编辑器内可以见到水平与垂直滚动条。TextArea类提供了多种构造方法,用于创建文本区域组件的对象。常见的构造方法的使用如下:上一页下一页返回6.3项目支撑知识其中,rows和columns分别表示新建文本区的行数和列数,text为文本区域中初始字符串,scrollbars表示在文本区域中可见滚动条。例如,如果想创建20行4列的文本区域,可以使用如下的构造方法实现:(3)TextComponent类中的常用方法。TextComponent类中的方法适合于TextField类和TextArea类,原因是TextField类和TextArea类都是它的子类。TextComponent类的常用方法见表6-2所示,TextField类的常用方法见表6-3所示。上一页下一页返回6.3项目支撑知识(4)文本事件(TextEvent)。该类只包含一个事件,即代表文本区域中文本变化的事件TEXTVALUECHANGED。例如,键入字符、删除字符都将引发这个事件。这个事件比较简单,不需要特别判断事件类型的方法和常量。该事件通常在文本框或文本域组件内容发生变化时被引发。TextEvent类产生的事件,经TextListenet接口触发动作,再textValueChanged()方法去完成这些动作。上一页下一页返回6.3项目支撑知识由于TextField对象只允许有一行,所以实际它比TextArea多产生一种事件,如当用户在文本枢中按回车键时,将引发代表动作事件的ActionEvent事件,ActionListener可以通过actionPerformed()知道这个事件。如果希望响应TextEvent类事件,则需要把文本枢注册给实现了TextListener接口的文本改变事件监听者。例如,textField1.addTextListener(this)。接着再通过定义响应方法publicvoidtextValueChanged(TexlEvente),就可以响应文本利r引发的文本改变事件和动作事件。上一页下一页返回6.3项目支撑知识对于文本改变事件,调用方法e.getSource()可以获得引发该事件的文本枢对象。调用这个文本枢的方法,可以获得改变后的文本内容。例如:对于动作事件,同样可以通过调用e.getSource()方法获得用户输入回车的刀阵个文本枢的对象。4.下拉列表与选择事件上一页下一页返回6.3项目支撑知识(1)选择事件(ItemEvent)。ItemEvent类只包含一个事件,即代表选择项的选中状态发生变化的事件常量ITEMSTATECHANGED。引发这类事件的动作包括:①改变列表类List对象中选项的选中或不选中状态。②改变下拉列表类Choice对象中选项的选中或不选中状态。③改变复选按钮类Checkbox对象的选中或不选中状态。④改变检测盒菜单项CheckboxMenuItem对象的选中或不选中状态。ItemEvent类的主要方法有:上一页下一页返回6.3项目支撑知识①publicItemSelectablegetItemSelectable():得到选中的事件源。②publicObjectgetItem():得到选中的选择项。③publicintgetStateChange():得到选中项的状态变化类型,它的返回值可能是下面两个静态常量之一。ItemEvent.SELECTED:代表选项被选中。ItemEvent.DESELECTED:代表选项被放弃。ItemEvent类产生的事件,以ItemListener接口触发动作,再由itemStateChanged()方法去完成这些动作。上一页下一页返回6.3项目支撑知识(2)下拉列表下拉列表是实现多选一的输入界面,与单选按钮不同的是它将所有选项折叠收藏起来,只显示最前面的或被用户选中的一个。如果希望看到其他的选项,只需单击下拉列表右边的下三角按钮就可以“下拉”出一个罗列了所有选项的长方形区域。要产生一个下拉列表,可采用如下方式:Choicecolor=newChoice()//下拉列表的构造方法Color.add(“红色”)//将字符串加入下拉列表中Color.add(“绿色”)Color.add(“蓝色”)上一页下一页返回6.3项目支撑知识下拉列表常用的方法如下。add(stringitem):加入一个列表项到下拉列表中。getselectedindex():获得目前所洗择项的索引(第一项序号为0,依此类推)getSelecteditem():获得洗中列表项的标琴文本字符串insert(Stringitem
int
index):加入一个列表项到指宗的位青。remove(int
index):删除指宗序号的列表项remove(Stringitem):删除指宗文本的列表项。上一页下一页返回6.3项目支撑知识removeAll():将下拉列表中所有洗项删除Select(intindex):洗中指宗序号的列表项select(stringtem):选中指宗文本内容的洗项。5.列表与选择事件列表也是列出一系列的选择项供用户选择,但是列表可以实现多选,即允许复选。在创建列表时,同样应该将它的各项选择项加入到列表中。可使用如下方法创建列表:上一页下一页返回6.3项目支撑知识Listcolorlist=newlist(3,true)//列表的构造方法Colorlist.add(“red”)//将字符串加到列表中Colorlist(“green”)Colorlist(“blue”)List(3,true)中的3表明该列表只显示3个选项,true表示可做多重选择,若为false,则只能做单一的选择。列表常用的方法如下。上一页下一页返回6.3项目支撑知识add(Stringitem):将标签为item的洗项加入列表中。add(Stringitem,intindex):将标琴为item的洗项加入列表中指宗序号处getSelecteditem():获得已选中的选择项文本getSelecteditems():获得所有已选择的选项组成的字符数组。getSelectedindex():获得已选中的选择项的序号。getSelectedindexs():获得所有已选择的选项组成的格型数组select(intindex):选中指宗序号的选项。Deselect(intindex):不选指宗序号的选项上一页下一页返回6.3项目支撑知识Remove(Stringitem):将制定标签的选项删除Remove(intindex):将制定序号的选项删除列表可以产生两种事件:当用户单击列表中的某一个选项并选中它时,它将产生ItemEvent类的选择事件;当用户双击列表中的某个选项时,将产生ActionEvent类的动作事件。6.复选框与选择事件Checkbox组件提供一种简单的“开/关”输人设备,它旁边有一个文本标签。每个复选按钮只有两种状态:true表示选中,false表示未被选中。上一页下一页返回6.3项目支撑知识创建复选按钮对象时可以同时指明其文本标签,这个文本标签简要地说明了复选按钮的意义和作用。复选按钮的构造方法如下:其中,str指明对应的文本标签,tf是一个逻辑值,或为true,或为false。如果要知道复选按钮的状态,可以调用方法getState()获得;若按钮被选中,返回true,否则返回false。调用方法setState()可以在程序中设置是否选中复选按钮。例如,下面的语句将使复选按钮处于选中的状态。上一页下一页返回6.3项目支撑知识当用户单击复选按钮使其状态发生变化时就会引发ItemEvent类代表的选择事件。7.单选按钮组与选择事件单选按钮组将多个复选枢构成一组,该组内的所有复选枢是互斥的,即在任何时刻,这个单选按钮组中只有一个复选枢的值是true,其他均为false。当前被选中的复选枢的值为true。在程序中可以使用单选按钮组的构造方法来创建一个单选按钮组,再在这组中增加复选枢,就可以完成单选按钮组的创建。注意,这时创建的复选枢,其外观会发生改变,而且所有和单选按钮组相关联的复选枢将表现出“单选”的行为。上一页下一页返回6.3项目支撑知识单选按钮组用CheckboxGroup类的对象表示。在声明单选按钮组时,可以用如下方法:CheckboxGroupradio=newCheckboxGroup()//单选按钮组构造方法Add(newCheckbox(“YES”,radio,true);//在单选按钮组创建第1个复选框Add(newCheckbox(“NO”,radio,false);//在单选按钮组创建第2个复选框Add(newCheckbox(“CANCEL”,radio,false);/在单按钮组创建第3个复选框上一页下一页返回6.3项目支撑知识其中Add(newCheckbox(”YES“,radio,True)的“YES”代表选择单选按钮的标签名称,radio代表单选按钮组,如果没有加入radio,则代表复选按钮;此处true代表按钮被选中,若是false,代表未被选中。单选按钮的选择是互斥的。调用它的getSelectedcheckbox()方法可以获知用户选择了哪个按钮,再调用该对象的方法getLabel()就可以知道用户选择了什么信息。同样调用getSelectedcheckbox()方法,可以在程序中指定选择的按钮。上一页下一页返回6.3项目支撑知识8.滚动条与调整事件AdjustmentEvent类只包含一个事件,即带有ADJUSTMENTVALUECHANGED常量事件。与ItemEvent事件引发的离散状态变化不同,ADJUSTMENTVALUE
CHANGED是GUI组件状态发生连续变化的事件,引发这类事件的具体动作有:操纵滚动条(Scrollbar)改变其滑块位置。操纵用户自定义的Scrollbar对象的子类组件,改变其滑块位置。AdjustmentEvent类产生的事件,经由AdjustmentListener接口触发动作,再由adjustmentValueChanged()方法去完成这些动作。上一页下一页返回6.3项目支撑知识AdjustmentEvent类的主要方法如下。PublicAdjustablegetAdjustable():返回引发状态变化事件的事件源。PublicintgetAdjustmentType():返回状态变化事件的状态变化类型,通过其返回值,就可以知道用户发出的哪种操作引发了哪种连续的状态变化。PublicintgetValue():返回状态变化后的滑块对应的当前数值。滚动条(Scrollbar)上一页下一页返回6.3项目支撑知识滚动条是用来选取某一个介于最大值与最小值之间的值的组件。滚动条可分成水平滚动条(Horizontalscrollbar)和垂直滚动条(Verticalscrollbar)两种。水平滚动条包括向左和向右的滚动条箭头及指针;垂直滚动条包括向上和向下的滚动条箭头及指针。创建水平或垂直滚动条的方法如下:其中,orientation代表滚动条方向,有Scrollbar.HORIZONTAL和Scrollbar.VERTICAL两种;value为滚动条初值;visible为滚动条指针的大小;minimum为滚动条最小值;maximum为滚动条最大值。上一页下一页返回6.3项目支撑知识Scrollbar:组件常用的方如下。getBlockIncrement():获得滚动条按钮的增量。getMaximum():获得滚动条最大值。getMinimum():获得滚动条最小值。getUnitIncrement():获得滚动条每次的增量。getValue():获得滚动条目前的值。setBlockIncrement(int):设定滚动条按钮的增量。setMaximum(int):设定滚动条最大值。setMinimum(int):设定滚动条最小值。上一页下一页返回6.3项目支撑知识setOrientation(int):设定滚动条方向。setUnitIncrement(int):设定滚动条每次的增量。setValue(int);设定滚动条目前的值。setValues(int,int,int,int):设定滚动条4种属性(value,visible,minimum,maximum)的值。滚动条可以引发AdjuetmentEvent类代表的调整事件,当用户通过各种方式改变滑块位置从而改变其代表的数值时,都会引发调整事件。上一页下一页返回6.3项目支撑知识9.鼠标、键盘事件(1)鼠标事件(MouseEvent)。MouseEvent类和KeyEvent类都是InputEvent类的子类,InputEvent类不包含任何具体的事件。调用InputEvent类的getModifiers()方法后,把返回值与InputEvent类的几个静态整型常量ALTMASK,CTRLMASK,SHIFTMASK,METAMASK、BUTTON1MASK、BUTTON2MASK、BUTTON3MASK相比较,就可以知道用户在引发KeyEvent事件时是否同时按下了功能键,或者用户在单击鼠标时单击的是哪个键。上一页下一页返回6.3项目支撑知识MouseEvent类包含如下的若干个鼠标事件,分别用MouseEvent类的同名静态整型常量标志。①MOUSECLICKED;鼠标单击事件。②MOUSEDRAGGED;鼠标拖动事件。③MOUSEENTERED;鼠标进入事件。④MOUSEEXITED;鼠标离开事件。5MOUSEMOVED;鼠标移动事件。
MOUSEPRESSED;鼠标按钮按下事件。⑦MOUSERELEASED;鼠标按钮松开事件。上一页下一页返回6.3项目支撑知识调用MouseEvent对象的getID()方法并把返回值与上述常量比较,就可以知道用户引发的是哪个具体的鼠标事件。MouseEvent类有如下主要方法。①publicintgetX():返回发生鼠标事件的X坐标。②publicintgetY():返回发生鼠标事件的Y坐标。③publicPointgetPoint():返回鼠标事件发生的坐标点。
publicintgetClickCount():返回鼠标点击事件的点击次数。(2)键盘事件(KeyEvent)。上一页下一页返回6.3项目支撑知识KeyEvent类包含如下3个具体的键盘事件,分别对应Keyevent类的几个同名的静态整型常量。①KEYPRESSED;键盘上按键被按下的事件。②KEYRELEASED;键盘上按键被松开的事件。③KEYTYPED;键盘上按键被敲击的事件。KeyEvent类的主要方法如下。①publicchargetKeyChar:返回KeyEvent类的一个静态常量KeyEvent.CHARUNDEFINED。②publicStringgetKeyText():返回按键的文本内容。上一页下一页返回6.3项目支撑知识与KeyEvent事件相对应的监听者接口是Keylistener,这个接口中定义了如下的3个抽象方法:keyPressed、keyReleased、keyTyped,凡是实现了KeyListener接口的类都必须具体实现这3个抽象方法。6.3.5项目支撑知识5布局管理器
Java为了实现跨平台的特性并且获得动态的布局效果,将容器内的所有组件安排给“布局管理器”负责管理,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。上一页下一页返回6.3项目支撑知识布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout。FlowLayoutFlowLayout是Panel,Applet的默认布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。构造方法主要下面几种。(1)FlowLayout(FlowLayout.RIGHT,20,40);上一页下一页返回6.3项目支撑知识第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是像素。(2)FlowLayout(FlowLayout.LEFT);居左对齐,横向间隔和纵向间隔都是默认值5个像素。(3)FlowLayout();默认的对齐方式居中对齐,横向间隔和纵向间隔都是默认值5个像素。上一页下一页返回6.3项目支撑知识2.BorderLayoutBorderLayout是Window,Frame和Dialog的默认布局管理器。BorderLayout布局管理器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。各个区域的位置及大小如图6-4所示。3.GridLayout使容器中各个组件呈网格状布局,平均占据容器的空间。4.CardLayout上一页下一页返回6.3项目支撑知识CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面。牌布局管理器(CardLayout)就像一副叠得整整齐齐的扑克牌一样,有54张牌,但是只能看见最上面的一张牌,每一张牌就相当于牌布局管理器中的每一层。上一页返回6.4项目实施【例6-1】本项目主要是展示监听器。下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:Java的图形用户界面是事件驭动的,并且由各种各样的监听器(Listener)负责捕捉各种事件。通常由组件类提供的一个addxxxxxListener的方法来完成添加监听器。上一页下一页返回6.4项目实施本项目中设计了一个窗口类(publicclassJava2extendsFrame{…),并且为这个窗口添加了一个窗口监听器(addWindowLislener(newWindowAdapter()…)。而我们添加的这个窗口监听器主要监听了窗口关闭(publicvoidwindowClosing(WindowEvente)…)事件。在窗口关闭事件中我们退出了整个应用程序(System.Exit(0););另外我们添加了按钮监听器(addActionListener(newHandleButton());),主要实现了屏幕输出(System.out.println(”Thebuttonispressed!”;)。上一页下一页返回6.4项目实施【例6-2】要求:单击“新内容”按钮,如图6-5中的图(a),显示出键盘对话框,如图(b),输入字符串,并将输入的字符串替换原来文本框中的内容,单击“选中前三个字符”按钮时选中文本框中的前三个字符,如图(c)所示。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目是JOptionPane类和TextField组件的使用。(1)Swing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,利用JOptionPane类中的各个static方法来生成各种标准的对话枢,实现显示出信息、提出问题、警告、用户输入参数等功能。这些对话枢都是模式对话利、,可以采用showxxxDialog()来显示,如showConfirmDialog()显示确认对话枢、showInputDialog()显示输入文本对话枢、showMessageDialog()显示信息对话枢、showOptionDialog()显示选择性的对话枢。上一页下一页返回6.4项目实施本项目用到的是showInputDialog()显示输入文本对话枢,格式如下:StringinputValue=JOplionPane.showInputDialog(”Pleaseinputavalue");(2)TextField只有一行的区域,它接收来自键盘的输入或输出简单的显示信息。它拥有的方法如下。setText(字符串变量):设置文本枢的内容;select(起始字符的位置,需选中的字符的长度):用于选中字符串。【例6-3】在单击”Exit”按钮和窗口右上角的关闭按钮时,可以关闭窗口。要求程序运行后的界面如图6-6所示。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目是AWT图形化用户界面(GUI)程序设计。在AWT中,可以利用构造方法Button(Stringlabel)来创建按钮构件,并通过调用Frame实例的add方法将按钮添加到窗体中。由于Frame的默认布局管理器为BorderLayout,故Frame的add方法的第二个参数要指定将构件添加到哪个区域(North,South,West,East,Center)。语句System.exit(1);能使程序正常退出上一页下一页返回6.4项目实施【例6-4】本题的要求是:完成程序并运行后显示一个窗口。该窗口包含一个按钮和一个文本域,当单击按钮时将在文本域中显示当前日期,如图6-7所示。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目考查的是布局管理器的设置及监听器的注册。本项目为窗口对象f设置厂FlowLayout布局管理器,并注册了关闭窗口的监听器;对于按钮对象b,必须对其进行注册监听器授权,系统才会自动调用actionPerformed进行事件处理。【例6-5】在标题为“ButtonTest”的窗口中显示一个按钮,当单击该按钮时将弹出另一个标题为”Another"的窗口(如图6-8所示)。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目是事件处理。上一页下一页返回6.4项目实施【例6-6】完成程序并使程序运行后得如图6-9所示的结果。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目是Swing构件和AWT中的事件处理。(1)类FontFratme的构造方法中有代码:setTitle(“沁园春.雪”);用于设置应用程序窗体的标题“沁园春.雪”,故FontFrame是JFrame的子类。(2)类FontPanel的方法paintComponent(Graphicsg)中的语句super.paintComponent(g);说明FontPanel覆盖了其父类的相应方法,而方法paint-Component(Graphicsg)是抽象类Javax.swing.JComponent中定义的,FontPanel应是JComponent的子类。上一页下一页返回6.4项目实施(3)FontPanel的paintComponent方法中的message存储了程序中要显示的字符串,且Graphics的drawString方法用来“输出”字符串。【例6-7】要求程序运行的窗口(如图6-10所示)。并在命令行窗口中每隔1秒显示一下当前时间,类似:在按下“确定”按钮时自动退出程序。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本题考查的是Swing构件和AWT中的事件处理。上一页下一页返回6.4项目实施(1)类Javax.swing.Timer的构造方法Timer(intdelay,ActionListenerlistener),该类主要用来按指定的时间间隔触发一个Action事件(ActionEvent)。(2)类TimePrinter要成为Action事件的监听器类必须要实现ActionListener接口。【例6-8】比较两个整数的大小,运行程序,完成如图6-11两个整数的输入。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施评析:本项目主要是数据类型转换和JOptionPane对话框。因为从键盘输入的数据类型为字符串类型,所以需要将其转换为整型。JOptionPane对话框的相关知识。根据对话框的用途,可以将JOptionPane对话框分为4种类型。上一页下一页返回6.4项目实施(1)showMessageDialog:向用户显示一些消息。(2)showConfirmDialog:问一个要求确认的问题并得到yes/no/cancel响应。(3)showInputDialog:提示用户进行输入。(4)showOptionDialog:可选择的对话框。本项目使用的实例是显示MessageDialog,格式如下:JOptionPane.showMessageDialog(null,result,“比较结果”,JOptionPane.INFORMATIONMESSAGE);上一页下一页返回6.4项目实施【例6-9】分析球队能否升级的程序,每个球队由10名队员组成。程序要求输入考核队员及格否的标记数,如考核及格输入1,否则输入2。完成程序,运行后完成10个整数(1或2)的输入,如图6-12。上一页下一页返回6.4项目实施上一页下一页返回6.4项目实施运行结果如图6-13和图6-14所示:评析:本项目是JOptionPane类。Swing中提供了JOptionPane类来实现类似Windows平台下MessageBox的功能,利用JOptionPant类中的各个static方法来生成各种标准的对话枢,实现显示出信息、提出问题、警告、用户输入参数等功能。上一页下一页返回6.4项目实施这些对话枢都是模式对话枢,可以采用showxxxDialog()来显示,如showConfirmDialog()显示确认对话框、showInputDialog()显示输入文本对话框、showMessageDialog()显示信息对话框、showOptionDialog()显示选择性的对话框。本项目使用的实例是显示MessageDialog,格式如下:JOptionPane.showMessageDialog(null,“在对话枢内显示的描述性的文字”,“标题条文字串”,JOptionPane.INFORMATIONMESSAGE);上一页下一页返回返回6.4项目实施另外本项目还用到了强制类型转换,由于变量input中存的是字符串,故要将字符串转化成数值才能赋给result进行数值比较。【例6-10】从1开始,每秒打印一个递增的整数。上一页下一页6.4项目实施运行所得结果是:在控制台每秒打印123……并有消息窗口提示”退出程序?”,如图6-15所示。上一页下一页返回6.4项目实施按确定键结束程序打印。评析:本项mu是事件监听。Java的图形用户界面是事件驭动的,并且由各种各样的监听器(Listener)负责捕捉各种事件。通常由组件类提供的一个addxxxxxListener的方法来完成添加监听器。这里添加的ActionListener监听者是处理动作事件。当事件发生时,引发的事件将被此事件的监听者监听到,并引发ActionListener类的actionPerformed(ActionEvente)方法响应动作事件,语句System.ex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解析(2026)《GBT 3098.15-2023紧固件机械性能 不锈钢螺母》
- 2026年人教版初中八年级语文上册说明文拓展探究卷含答案
- 2026年初中八年级上册语文名著导读阅读检测卷含答案
- 《JBT 10650-2006冶金设备用带座剖分式滚动轴承》专题研究报告
- 《JBT 10452-2018办公设备 文本装订机》专题研究报告
- 湖南中考:政治高频考点大全
- (正式版)DB43∕T 800.2-2013 《有机茶出口种植基地安全质量控制技术规程 第2部分:栽培管理》
- 2026年辅警转正考试警务实战技能试题及答案
- 2026年汽车营销策划实战技巧题库
- 风险管理视角下的工程合同履约协议合同三篇
- 康复新进展课件
- 2026年高考物理一轮复习:人教版必修第1~3共3册知识点考点提纲汇编
- 服务类型意向协议合同
- GB/T 10091.1-2025事物特性表第1部分:定义和原理
- 专升本食品工程专业2025年食品化学试卷(含答案)
- 农产品食品检验知识培训课件
- 应急救灾物资项目方案投标文件(技术方案)
- 绿化园林工安全培训课件
- 胃肠镜清洗流程课件
- 施工过程中的设计变更管理措施指南
- 妇幼健康服务工作培训方案
评论
0/150
提交评论