Java程序设计课件(高晓黎)第7章AWT支持下的GUI编程_第1页
Java程序设计课件(高晓黎)第7章AWT支持下的GUI编程_第2页
Java程序设计课件(高晓黎)第7章AWT支持下的GUI编程_第3页
Java程序设计课件(高晓黎)第7章AWT支持下的GUI编程_第4页
Java程序设计课件(高晓黎)第7章AWT支持下的GUI编程_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章第七章 AWTAWT支持下的支持下的GUIGUI编程编程 立体化教材计算机系列 Java程序设计程序设计 2 立体化教材计算机系列 Java程序设计程序设计 3本章知识重点3132AWT的非容器组件33AWT的布局管理34AWT的菜单系统AWT的容器组件立体化教材计算机系列 Java程序设计程序设计 4本章知识难点33各非容器组件主要方法及其参数343132创建组成界面的成份和元素各容器组件主要方法及其参数布局的设置与管理立体化教材计算机系列 Java程序设计程序设计 5GUI与AWT GUI与JFCAWT与Swing :AWT JDK 1.0与JDK 1.1版本下提供的GUI开发工具包

2、,包含60多个组件类与接口,用以创建基于窗口或Applet的GUI应用。Swing Java 2发布的功能更加完善的GUI组件类库,能够替代AWT,包含250多个更为丰富多样的类与接口,支持复杂GUI系统的开发。 立体化教材计算机系列 Java程序设计程序设计 6GUI与AWT AWT的组件类 1. GUI组件(Component)又可译作GUI构件,是组成GUI应用程序的图形用户界面元素(如菜单、文本框、标签、命令按钮等)。每在GUI组件都与一个特定的与操作系统平台无关的组件类相对应。这些组件相互配合,可以快速搭建起GUI程序。2. GUI组件按照功能可分为容器组件与基本组件。3. Java

3、将GUI组件类分类分层,组织到一个名为java.awt的包中。用”import java.awt.*;”语句导入该包中含有的所有类与接口。 立体化教材计算机系列 Java程序设计程序设计 7GUI与AWT 4. AWT基本组件类之间的继承关系 立体化教材计算机系列 Java程序设计程序设计 8AWT的容器组件 组件不能直接在程序运行界面中显示,必须放置在容器(Container) 组件内才能呈现出来。Container继承自Component类,因而容器自身首先也是一种组件,具有其他组件的共同特性;其次容器是一种特殊的组件,其特殊性在于容器的功能是用来容纳一般的组件对象与容器组件对象的,即容器

4、除提供给其他组件作为安置场所外,其自身还可相互嵌套。Container类直接派生出Window类、Panel类、ScrollPane类等几种容器子类。Window类作为顶层窗口类,不依赖于其他容器而独立存在。Window类直接派生两个子类:Frame类与Dialog类。立体化教材计算机系列 Java程序设计程序设计 9AWT的容器组件容器作为特殊的组件,具有以下特征:容器有一定的空间范围与尺寸,容器一般是矩形的,有些组件可以显示出边界外框。容器有一定的位置坐标,该位置既可以显示器的绝对位置表达,也可以相对于其他容器边界的相对位置表达。容器一般可以设定自己的背景颜色,还可对背景色设置透明度,并可

5、将一幅图案加载到容器上作为特定背景。加载到容器内的GUI界面元素随着容器的打开与显示而同步显示;当容器隐藏或关闭时,这些界面元素也跟随着被隐藏或关闭。容器组件可以相互嵌套,即可将一个或多具容器对象放置到其他容器对象中,从而构建更为丰富的界面层次结构。(6)Window,Frame及Dialog是唯一有资格作为顶级容器窗口的三类组件。所谓顶级容器,就是能够直接加载到桌面,由桌面管理系统来管理,而不需要放置在任何其他容器对象内,并且能够作为其他容器属主的容器组件。立体化教材计算机系列 Java程序设计程序设计 10窗口容器组件Window Window类为Frame类与Dialog类的基类,由它生

6、成的Window对象称为窗口。Window对象不拥有边框与菜单栏,在创建Window对象时,必须指明它的属主 (owner) 对象;能用作窗口属主的组件只能为顶级容器window、frame及dialog。用户编程时很少直接使用Window类对象作为程序的界面窗口,通常会使用该类的Frame子类生成应用窗口。Window类提供了若干重要方法,可被自身对象调用或被Frame或Dialog子类所继承。系统为它指定的默认布局管理器为BorderLayout。立体化教材计算机系列 Java程序设计程序设计 11框架容器组件Frame 框架组件Frame是AWT应用程序最常使用的基本容器窗口之一,Fra

7、me对象可以带有边框、标题栏、菜单栏与窗口缩放功能按钮(包括窗口最大化、最小化及关闭三个按钮)。Frame类提供了大量的方法来完成窗口对象的生成与设置。表7.3列出了Frame类的部分常用方法(由Window类继承来的方法一般不再重复列出)。 立体化教材计算机系列 Java程序设计程序设计 12框架容器组件Frame【例】创建一个标题为Frame Usage Demo-1,背景色为蓝色,大小为300200的框架窗口。运行效果如下运行效果如下:立体化教材计算机系列 Java程序设计程序设计 13框架容器组件Frameimport java.awt.*; /导入AWT包的所有组件类public c

8、lass Exa_7_1 /定义用户类public static void main(String args) Frame myFrame=new Frame(); /调用无参构造方法创建窗口对象myFrame.setTitle(Frame Usage Demo-1); /调用setTitle()方法设置窗口标题 myFrame.setSize(300,200); /调用setSize()方法设置窗口尺寸 myFrame.setBackground(Color.BLUE); /设置窗口背景色 myFrame.setVisible(true); /setVisible()方法设置窗口为可见立体化

9、教材计算机系列 Java程序设计程序设计 14框架容器组件Frame创建窗口对象(以Frame类为例)通常需要以下步骤:一般用 “import java.awt.*;”导入AWT开发工具包所有类;3132定义用户类,可用extends子句指定用户类的父类为Frame;33使用窗口类的构造方法(Frame类有两个)生成窗口实例对象,或者用继承自父类的构造方法生成用户类的对象;34通过对象调用相应方法来设置窗口对象的标题35通过对象调用相应方法来设置窗口对象的尺寸大小、屏幕位置前、背景色、布局管理方案等特性;通过对象调用相应方法或设置属性,改变窗口对象默认的不可见状态,使它能够在平台桌面上显示出来

10、;36启动事件处理机制,为窗口对象设置关闭应用程序的功能。37立体化教材计算机系列 Java程序设计程序设计 15对话框容器组件Dialog Window类另一个重要的子类Dialog,常用来显示一个弹出式的信息窗口;该窗口具有标题与边框,一般没有菜单条与工具栏,窗口位置能够移动,却不支持尺寸的缩放。Dialog作为容器组件,能够为其他GUI组件提供安置空间;它的默认布局管理器为BorderLayout;将组件添加到Dialog对象,要使用add()方法;Dialog对象从Window类中继承了许多方法。这些特性,使得Dialog与Frame极为类似。立体化教材计算机系列 Java程序设计程序

11、设计 16对话框容器组件DialogFrame组件能够独立地作为应用程序的顶级窗口,为应用提供主界面;而Dialog组件则往往在主窗口已经存在的基础上,弹出一个临时窗口,充当着人机交互操作的辅助窗口,用来显示附加的信息,或接受用户输入的信息。Dialog对象不能独立存在,必须有一个上一级的容器窗口,来充当激活Dialog窗口的owner(译为拥有者或属主)。有资格充当Dialog对象owner的组件只有三类,即:Window,Frame及Dialog类。立体化教材计算机系列 Java程序设计程序设计 17对话框容器组件DialogDialog具有非模态(modeless) 与模态(modal)

12、两种类型。默认情况下为非模态模式。非模态对话框在处于活动状态时,它不阻塞其他窗口(包括owner窗口)的活动,它和其他窗口可以交替进行各自的操作,即非模态对话框以相容的策略与其他窗口“和平共处,相互配合”。模态对话框则以互斥的策略独占系统资源,限制其他窗口的活动;在自身显示时,禁止用户操作其他窗口,直至自己关闭,其他窗口才有机会被从阻塞状态中恢复活动窗口的特征。立体化教材计算机系列 Java程序设计程序设计 18对话框容器组件Dialog【例】创建一个模态对话框. 程序的运行结果见图 立体化教材计算机系列 Java程序设计程序设计 19对话框容器组件Dialogimport java.awt.

13、*;class Exa3 public static void main(String args) Frame ownerWin=new Frame(Owner Window of Dialog); ownerWin.setBounds(100,100,300,200);Dialog dlgModal=new Dialog(ownerWin,Modal Dialog Usage Demo,true); dlgModal.setBounds(125,150,250,100); dlgModal.add(new Label( 这是一个模态对话框对象);ownerWin.setVisible(tru

14、e); dlgModal.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 20对话框容器组件Dialog【例】创建一个非模态对话框. 程序的运行结果见图立体化教材计算机系列 Java程序设计程序设计 21对话框容器组件Dialogimport java.awt.*;class Exa_7_4 extends Frame public Exa_7_4(String title) super(title); this.setSize(300,200); this.setLayout(null); TextField txtMain=new TextField(在

15、此操作属主窗口); txtMain.setBounds(50,100,200,20); this.add(txtMain); 立体化教材计算机系列 Java程序设计程序设计 22对话框容器组件Dialogpublic static void main(String args) Exa_7_4 myWin=new Exa_7_4(Owner Window of Dialog); Dialog dlgDefault=new Dialog(myWin,Modeless Dialog Usage Demo); dlgDefault.setSize(250,150); dlgDefault.add(ne

16、w Label( 这是一个非模态对话框对象); /make window visible myWin.setVisible(true); dlgDefault.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 23面板容器组件Panel Panel主要用来为基本的GUI组件提供容器空间,并为这些容器提供一个分类、分组的手段。Panel类无法独立担当应用程序界面的顶端窗口,它必须放置在Window、Frame和Dialog这三种可以作为顶级窗口的容器组件内,才能被显示出来。Panel对象确定了一个矩形区域,该区域能够容纳其它的GUI组件(甚至也包括自身的类对象)

17、,并以特定的背景与边框,显示到顶级窗口对象中。立体化教材计算机系列 Java程序设计程序设计 24面板容器组件PanelPanel类具有一个重要的Applet子类,该类主要支持Web浏览器窗口应用程序的构建。系统为Panel对象指定的默认布局管理器为FlowLayout。向Panel对象中加入各类GUI组件要使用add()方法。 生成Panel对象要采用以下两种构造方法之一:Panel():无参的构造方法,创建一个采用FlowLayout默认布局管理器的面板对象; Layout ManagerPanel(Layout Manager layout) :创建一个采用参数指定布局管理器的面板对象。

18、立体化教材计算机系列 Java程序设计程序设计 25面板容器组件Panel【例7.5】创建一个黄色面板和一个青色面板,将它们并排添加到标题为Panel Usage Demo,大小为270200的框架窗口内。 程序的运行结果见图 立体化教材计算机系列 Java程序设计程序设计 26面板容器组件Panelimport java.awt.*;class Exa_7_5public static void main(String args) /create window Frame myWin=new Frame(Panel Usage Demo); myWin.setSize(270,200); m

19、yWin.setLayout(null); /setting attributes of the first panel Panel pnlYellow=new Panel(); pnlYellow.setBounds(20,50,100,120); pnlYellow.setBackground(Color.YELLOW); 立体化教材计算机系列 Java程序设计程序设计 27面板容器组件Panel/setting attributes of the second panel Panel pnlCyan=new Panel(); pnlCyan.setBounds(150,50,100,12

20、0); pnlCyan.setBackground(Color.CYAN); /add panels to window myWin.add(pnlYellow); myWin.add(pnlCyan); /make window visible myWin.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 28应用窗体的屏幕居中 Java的GUI屏幕坐标原点 (0,0)对应位置为屏幕的左上角,缺省的坐标单位为屏幕像素.GUI应用程序的窗体起始位置默认为屏幕原点(0,0),X坐标由左至右增加,Y坐标由上至下增加。使用setLocation(x,y)或setBo

21、unds(x, y, width, height)方法可以将应用窗体的左上角位置设置到指定的屏幕位置(x,y)。实际应用中,常需将主窗体置于整个屏幕中央。为此,首先需要获取实际屏幕的四个重要参数:屏幕原点的横坐标screenOriginX,屏幕原点的纵坐标screenOriginY,屏幕宽度screenWidth与屏幕高度screenHeight,然后还要获取主窗体的宽度frameWidth与高度frameHeight,利用这六个参数,不难由下面公式计算出主窗体居中于屏幕时它的左上角坐标(centerX,CenterY):立体化教材计算机系列 Java程序设计程序设计 29应用窗体的屏幕居中c

22、enterX=screenOriginX+(screenWidth-frameWidth)/2centerY=screenOriginY+(screenHeight-frameHeight)/2窗体的宽度与高度可直接由Frame类的getWidth() 方法与getHeight()方法获取;屏幕宽度与高度的获取,则需要借助于AWT包中定义的另两个类Dimension与Toolkit来完成。Dimension(尺度)类封装了与特定组件相关的width 与height属性,主要定义具有大小尺寸特征的对象。Toolkit(工具箱)类作为抽象类,提供了与组件的本地化实现相关的方法描述。例如静态方法ge

23、tDefaultToolkit(),用来获取与平台相关的当前系统特征的默认实现,而抽象方法getScreenSize()则用来获取屏幕的尺寸大小,其返回类型被定义为Dimension对象。立体化教材计算机系列 Java程序设计程序设计 30应用窗体的屏幕居中下面的代码将完成获取与当前系统相关联的屏幕尺寸的操作:/借助Toolkit类的方法获取当前系统的屏幕尺度对象Dimension screenSize=java.awt.Toolkit.getDefaultToolkit().getScreenSize();screenWidth= screenSize.width; /取出屏幕尺度对象的宽度

24、分量screenHeight= screenSize.height; /取出屏幕尺度对象的高度分量立体化教材计算机系列 Java程序设计程序设计 31AWT的非容器组件非容器组件具有一定的形状、位置与尺寸大小,有自己的属性与方法,用new调用所属类的构造方法来创建自身对象;非容器组件无法独立存在于应用程序中,它们必须放置在容器组件中,并随着容器窗口一起显示。非容器组件的位置、大小与排列状况一般要由所在的容器的布局管理器来决定,但也可以停用容器的布局管理器,从而取消布局管理器对组件排放状态的影响,然后调用相应的方法,按用户需要来设置组件的大小、位置和安放部署,这些方法主要有setLocation

25、()、setSize()及setBounds()。非容器组件还有许多其他的通用方法,如设置组件前景色的setForeground()方法和设置组件前景色的setBackground()方法等。这些方法大多是从组件的公共抽象父类Compenent继承而来的。关闭容器的布局管理器,只需调用容器组件的setLayout(null)方法。立体化教材计算机系列 Java程序设计程序设计 32标签组件LabelLabel标签用来显示单行文本字符串信息,文本是静态的,可以在程序中通过调用setText()方法来改变显示的文本。标签对象可使用setSize()方法设置大小,setForeground ()方法

26、设置前景色,setBackground()方法设置背景色。设置后用方法add() 放置到容器中。333132构造方法有三种重载形式:public Label(),无参构造方法创建一个空白内容的标签,public Label(String content),创建一个以content参数为初始显示内容的标签;public Label(String content,int alignment),创建以content为内容的标签,alignment为整形常量,控制文本在对齐方式。Alignment一般取值:左对齐常量Label.LEFT,右对齐常量Label.RIGHT,居中对齐常量Label.CEN

27、TER。Label组件的默认对齐方式为左对齐。立体化教材计算机系列 Java程序设计程序设计 33标签组件Label【例7.7】创建大小相同、背景色不同、显示内容与文本的对齐方式各不相同的三个标签,并将它们左端对齐,竖向排列在一个300200大小的窗口内。立体化教材计算机系列 Java程序设计程序设计 34标签组件Labelimport java.awt.*;class Exa_7_7 extends Frame/定义用户类的构造方法,该方法用以创造带有标题的窗口public Exa_7_7(String title)super(title); /调用父类(即Frame类)的构造方法Frame

28、(String title)立体化教材计算机系列 Java程序设计程序设计 35标签组件Labelpublic static void main(String args) Exa_7_7 app=new Exa_7_7(Label Usage Demo); /生成应用窗口对象app app.setSize(300,200); /设置应用窗口的尺寸app.setLayout(null); /强制关闭应用窗口的布局管理器/创建第一个标签对象lbl_1并设置其属性Label lbl_1=new Label(); /调用构造方法创建空白标签lbl_1.setText(I am the first la

29、bel); /指定标签1显示的内容文本lbl_1.setBounds(50,50,200,30);/设置标签1的位置与大小lbl_1.setBackground(Color.CYAN);/设置标签1的背影色为青色立体化教材计算机系列 Java程序设计程序设计 36标签组件Label/创建第二个标签对象lbl_2并设置其属性Label lbl_2=new Label(I am the second label); lbl_2.setBounds(50,100,200,30); lbl_2.setForeground(Color.RED); /设置标签2的文本颜色为红色lbl_2.setAlign

30、ment(Label.CENTER); /设置标签2的文本为居中对齐立体化教材计算机系列 Java程序设计程序设计 37标签组件Label/创建第三个标签对象lbl_3并设置其属性Label lbl_3=new Label(I am the third label,Label.RIGHT); /标签3为右对齐lbl_3.setBounds(50,150,200,30);lbl_3.setBackground(Color.YELLOW);/设置标签3为黄色背影 /调用容器的add()方法将三个标签对象添加到应用窗口中 app.add(lbl_1); app.add(lbl_2); app.add

31、(lbl_3); /显示当前状态的应用窗口app.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 38按钮组件Button 按钮是图形用户界面中非常重要的一种基本组件,按钮本身不显示信息,它一般对应一个事先定义好的功能操作,并对应一段程序。当用户点击按钮时,系统自动执行与该按钮相联系的程序,从而完成预先指定的功能。创建:下面的语句用来创建按钮,传递给构造函数的字符串参数指明了按钮上的标签:Button enter = new Button ( 操作)常用方法 :调用按钮的getLabel( )方法可以返回按钮标签字符串;调用按钮的setLabel(Strin

32、g s)方法可以把按钮的标签设置为字符串s产生事件:当用户单击一个按钮时就引发了一个动作事件333132立体化教材计算机系列 Java程序设计程序设计 39按钮组件Button【例7.8】创建四个大小相同的6030尺寸的按钮,依照其标题的意义分别安置到上、下、左、右四个方位,使它们呈十字形,并对称地排放到280270的窗口中心。立体化教材计算机系列 Java程序设计程序设计 40按钮组件Buttonimport java.awt.*;class Exa_7_8 public static void main(String args) / 生成Frame窗口对象并设置其尺寸大小 Frame ha

33、ndle=new Frame(Button Usage Demo); handle.setSize(280,270); handle.setLayout(null); / 关闭窗口对象的布局管理器/ 生成带有标题的上、下、左、右四个按钮对象并设置其位置与尺寸 Button btn4Up=new Button(UP); btn4Up.setBounds(110,60,60,30); Button btn4Down=new Button(DOWN);立体化教材计算机系列 Java程序设计程序设计 41按钮组件Button btn4Down.setBounds(110,180,60,30); But

34、ton btn4Left=new Button(LEFT);btn4Left.setBounds(50,120,60,30);Button btn4Right=new Button(RIGHT); btn4Right.setBounds(170,120,60,30);/ 将四个按钮对象添加到窗口容器中 handle.add(btn4Up); handle.add(btn4Down); handle.add(btn4Left); handle.add(btn4Right); handle.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 42文本组件(TextC

35、omponent) 文本框与文本域(TextField与TextArea)Java中用于文本处理的基本组件有两种:单行文本框TextField和多行文本区域TextArea,它们都是TextComponent的子类。创建在创建文本组件的同时可以指出文本组件中的初始文本字符串,如下面的语句创建了一个10行45列的多行文本区域:TextArea textArea1 = new TextArea(10,45);而创建能容纳8个字符,初始字符串为“姓名”的单行文本框可以使用如下的语句:TextField name = new TextField(姓名,8); 立体化教材计算机系列 Java程序设计程序

36、设计 43文本组件(TextComponent) 常用方法TextField和TextArea都是常用方法。对于用户输入的信息,可以调用TextComponent的getText( )方法来获得。若希望在程序中对文本区域显示的内容赋值,可调用TextComponent的setText( )方法。textArea1.setText(你好,欢迎!);TextComponent中还有一些用来指定或获得文本区域中“选定状态”文本的方法,选定状态的文本一般用高亮或反白显示,select(int start, int end)方法将根据指定的起止位置选定一段文本;selectAll( )方法将选定文本区域

37、中的所有文本;setSelectionStart( )方法和setSelectionEnd( )方法分别指定选定文本的起、止位置;如果文本区域中已经有选定文本,getSelectionStart( )方法和getSelectionEnd( )方法将获得选定文本的起、止位置;如果希望获得选定文本的具体内容,可以调用getSelectedText( )方法。立体化教材计算机系列 Java程序设计程序设计 44文本组件(TextComponent) 除了继承TextComponent类的方法,TextField还定义了一些自己的特殊方法,例如某些场合下(如输入密码时)希望文本区域中的内容不如实回显在

38、屏幕上,可以调用如下的方法:TextField tf = new TextField(输入密码);tf.setEchoChar(*);TextField还定义了echoCharIsSet( )方法确认当前文本框是否处于不回显状态;getEchoChar( )方法获得当前文本框不回显的屏蔽字符。除了继承TextComponent类的方法,TextArea也定义了两个特殊的方法append(String s)和insert(String s, int index)。append(String s)方法在当前文本区域已有文本的后面添加字符串参数s指定的文本内容;insert(String s, in

39、t index)方法将字符串s插入到已有文本的指定序号处。立体化教材计算机系列 Java程序设计程序设计 45文本组件(TextComponent) 事件响应TextField和TextArea的事件响应首先由它们的父类TextComponent决定,TextComponent可以引发一种事件:当用户修改文本区域中的文本,如做文本的添加、删除、修改等操作时,将引发TextEvent对象代表的文本改变事件。在此基础上TextField还比TextArea多产生一种事件,当用户在文本框中按回车键时,将引发代表动作事件的ActionEvent事件,TextArea却不能产生ActionEvent事件

40、,也没有addActionListener( )这个方法。立体化教材计算机系列 Java程序设计程序设计 46文本域组件TextField 【例】实现如图所示的身份验证界面。其中窗口大小为300200,标签尺寸为7020,文本域尺寸为10020,按钮尺寸为10030.立体化教材计算机系列 Java程序设计程序设计 47文本域组件TextFieldimport java.awt.*;class Exa_7_9 extends Frame/ 类的构造方法 public Exa_7_9(String title) super(title); / 调用父类的构造方法显示程序标题 this.setSiz

41、e(300,200); / 设置窗口对象尺寸 this.setLayout(null); / 取消窗口对象的布局管理器 / 入口窗口对象并设置其尺寸大小 立体化教材计算机系列 Java程序设计程序设计 48文本域组件TextFieldpublic static void main(String args) Exa_7_9 app=new Exa_7_9(TextField Usage Demo); / 用户姓名栏目对应的标签与文本域组件设置 Label lblName=new Label(UserName:); lblName.setBounds(60,50,70,20); TextField

42、 txtName=new TextField(); txtName.setBounds(135,50,100,20); / 用户口令栏目对应的标签与文本域组件设置 Label lblPass=new Label(Password:); lblPass.setBounds(60,90,70,20); TextField txtPass=new TextField();立体化教材计算机系列 Java程序设计程序设计 49文本域组件TextFieldtxtPass.setEchoChar(*); /设置输入文本域的回显字符 txtPass.setBounds(135,90,100,20); / 设置

43、命令按钮 Button btnVerify=new Button(ID Validate); btnVerify.setBounds(100,140,100,35);/ 将各类组件添加到窗口容器内 app.add(lblName); app.add(txtName); app.add(lblPass); app.add(txtPass); app.add(btnVerify); /设置窗口的位置并设置将它显示出来 app.setLocation(200,100); app.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 50文本区组件TextArea 【例】

44、在300200的窗口中心位置安置一个大小为260140的文本域组件,组件的初始化内容为泰戈尔的一首诗,并选取中间的三行诗句。 立体化教材计算机系列 Java程序设计程序设计 51文本区组件TextAreaimport java.awt.*;class Exa_7_10 extends Frame public Exa_7_10() super(TextArea Usage Demo); this.setBounds(100,100,300,200); this.setLayout(null); public static void main(String args) Exa_7_10 app=

45、new Exa_7_10(); /setting TextArea content TextArea txtPoem=new TextArea(Stray birds of summern); 立体化教材计算机系列 Java程序设计程序设计 52txtPoem.append(Come to my windownTo sing and fly wayn); txtPoem.append(And yellow leaves of autumnnWhich have no songsn); txtPoem.append(Flutter and fall there with a signnO tro

46、upe of little vagrantsn); txtPoem.append(of the worldnLeave your footprints in my wordsn); txtPoem.setForeground(Color.RED); txtPoem.setBounds(20,40,260,140); txtPoem.select(61,143); app.add(txtPoem); app.setVisible(true); 立体化教材计算机系列 Java程序设计程序设计 53复选框组件Checkbox与与单选按钮组复选按钮(Checkbox)(1) 创建复选按钮又称为检测盒,

47、用Checkbox类的对象表示。创建复选按钮对象时可以同时指明其文本说明标签,这个文本标签简要地说明了检测盒的意义和作用。Checkbox backg = new Checkbox(背景色);(2) 常用方法每个复选按钮都只有两种状态:被用户选中的check状态,未被用户选中的uncheck状态,任何时刻复选按钮都只能处于这两种状态之一。查看用户是否点击选择了复选按钮,可以调用Checkbox的方法getState( ),这个方法的返回值为布尔量。若复选按钮被选中,则返回true,否则返回false。调用Checkbox的另一个方法setState( )可以用程序设置是否选中复选按钮。例如下面

48、的语句将使Checkbox处于选中的状态。 backg.setState( true );立体化教材计算机系列 Java程序设计程序设计 54复选框组件Checkbox与与单选按钮组 单选按钮组(CheckboxGroup)(1) 创建Checkbox只能提供“二选一”的机制。要想实现“多选一”,可以选择单选按钮组。单选按钮组是一组Checkbox的集合,用CheckboxGroup类的对象表示。每个Checkbox对应一种可能的取值情况,例如,下面语句创建的单选按钮组。style = new CheckboxGroup( );p = new Checkbox(普通,true,style);b

49、 = new Checkbox(黑体,false,style);i = new Checkbox(斜体,false,style); 把CheckboxGroup加入容器时需要把其中的每个单选按钮逐个加入到容器中,而不能使用CheckboxGroup对象一次性地加入。例如,加入上面的单选按钮需引用如下的语句: add(p); add(b); add(i); 立体化教材计算机系列 Java程序设计程序设计 55复选框组件Checkbox与与单选按钮组(2) 常用方法单选按钮的选择是互斥的,即当用户选中了组中的一个按钮后,其他按钮将自动处于未选中状态。调用CheckboxGroup的getSelec

50、tedCheckbox( )方法可以获知用户选择了哪个按钮,这个方法返回用户选中的Checkbox对象,再调用该对象的方法getLabel( )就可以知道用户选择了什么信息。同样,通过调用CheckboxGroup的setSelectedCheckbox( )方法,可以在程序中指定单选按钮组中的那个按钮。例如,下面的语句说明字体的风格为斜体。 sex.setSelectedCheckbox( i );立体化教材计算机系列 Java程序设计程序设计 56复选框组件Checkbox与与单选按钮组也可以直接使用按钮组中的Checkbox单选按钮的方法。例如直接调用 i.getState( );就可以

51、知道这个按钮是否被选中。如果这个按钮被选中了,那么其他按钮一定处于未选中状态。单选按钮组中可以包括两个或更多的单选按钮。(3) 事件响应CheckboxGroup类不是java.awt.*包中的类,它是Object的直接子类,所以按钮组不能响应事件,但是按钮组中的每个按钮可以响应ItemEvent类的事件。由于单选按钮组中的每个单选按钮都是Checkbox对象,它们可以响应ItemEvent类的事件立体化教材计算机系列 Java程序设计程序设计 57复选框组件Checkbox与与单选按钮组【例】在220200的窗口中构造个人信息选择的界面,界面中有两组基本信息,一组用单选按钮来选择个人的性别特

52、征,另一组用复选框来选择个人喜爱的水果类型。 立体化教材计算机系列 Java程序设计程序设计 58复选框组件Checkbox与与单选按钮组import java.awt.*;class Exa_7_11 extends Frame public Exa_7_11(String title) super(title); this.setSize(220,200); this.setLayout(null); /主方法main() public static void main(String args) Exa_7_11 app=new Exa_7_11(Checkbox&RadioBut

53、ton Usage Demo); /setting User Name field Checkbox chk=new Checkbox(Male),new Checkbox(Female),new Checkbox(Apple),new Checkbox(Orange),new Checkbox(Mango); 立体化教材计算机系列 Java程序设计程序设计 59Label lblPrompt=new Label(The Information of Myself:); lblPrompt.setBounds(35,40,150,20); app.add(lblPrompt); Checkbo

54、xGroup sexGroup=new CheckboxGroup();Label lblSex=new Label(My Sex:); lblSex.setBounds(20,70,50,20); app.add(lblSex); for (int k=0;k2;k+) chkk.setBounds(20,100+50*k,50,20); chkk.setCheckboxGroup(sexGroup); 复选框组件Checkbox与与单选按钮组立体化教材计算机系列 Java程序设计程序设计 60Label lblFruit=new Label(My Loving Fruit:); lblFr

55、uit.setBounds(110,70,90,20); app.add(lblFruit); for (int k=2;k5;k+) chkk.setBounds(125,100+25*(k-2),80,20); for (int k=0;k5;k+) app.add(chkk); /make window visible app.setLocation(200,100); app.setVisible(true); 复选框组件Checkbox与与单选按钮组立体化教材计算机系列 Java程序设计程序设计 61选择框组件Choice (1) 创建下拉列表也是“多选一”的输入界面。与单选按钮组利

56、用单选按钮把所有选项列出的方法不同,下拉列表的所有选项被折叠收藏起来,只显示最前面的或被用户选中的一个。如果希望看到其他的选项,只需单击下拉列表右边的下三角按钮就可以“下拉”出一个罗列了所有选项的长方形区域。创建下拉列表包括创建和添加选项两个步骤。 Choice size = new Choice( ); /创建下拉列表 size.add(10); /为下拉列表加入选项 size.add(14); size.add(18); 立体化教材计算机系列 Java程序设计程序设计 62选择框组件Choice(2) 常用方法下拉列表的常用方法包括获得选中选项的方法、设置选中选项的方法、添加和去除下拉列表

57、选项的方法。getSelectedIndex( )方法将返回被选中的选项的序号(下拉列表中第一个选项的序号为0,第二个选项的序号为1,依此类推)。getSelectedItem( )方法将返回被选中选项的标签文本字符串。select(int index)方法和select(String item)方法使程序选中指定序号或文本内容的选项。add(String item)方法和insert(String item, int index)方法分别将新选项item加在当前下拉列表的最后或指定的序号处。 remove(int index)方法和remove(String item)方法把指定序号或指定标

58、签文本的选项从下拉列表中删除。removeAll( )方法将把下拉列表中的所有选项删除。立体化教材计算机系列 Java程序设计程序设计 63选择框组件Choice【例】在250200的窗口中建立一个列有世界文学名著书目的选择框,用户可以从中选择个人最喜爱的一本著作。立体化教材计算机系列 Java程序设计程序设计 64选择框组件Choiceimport java.awt.*;class Exa_7_12 public static void main(String args) Frame myWin=new Frame(Choice Usage Demo); myWin.setSize(250,

59、200); myWin.setLayout(null); Label lblDepiction=new Label(The book of which I am fondest:); lblDepiction.setBounds(30,40,200,20);立体化教材计算机系列 Java程序设计程序设计 65Choice chcBook=new Choice(); chcBook.setLocation(25,65); chcBook.add(Gone with the Wind); chcBook.add(The Old Man and the Sea); chcBook.add(David

60、 Copperfield); chcBook.add(The Adventures of Tom Sawyer); chcBook.add(Jane Eyre); chcBook.add(Pride and Prejudice); myWin.add(lblDepiction); myWin.add(chcBook); myWin.setVisible(true); 选择框组件Choice立体化教材计算机系列 Java程序设计程序设计 66列表框组件List 创建列表也是列出一系列的选择项供用户选择,但是列表可以实现“多选多”,即允许复选。在创建列表时,同样应该将它的各项选择项(称为列表项Item)加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论