版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,Java语言,7,Java中的GUI,2,什么是GUI,GUI:Graphics User Interface图形用户界面,通过它用户和程序之间可以方便地进行交互。Java的抽象窗口工具包(AWT:Abstract Window Toolkit)中包含了许多类来支持GUI设计。,3,本章内容,7.1 AWT简介 7.2 文本框和文本区 7.3 标签 7.4 按钮 7.5 选择框 7.6 下拉列表和滚动列表 7.7 面板和画布 7.8 建立窗口和菜单 7.9 建立对话框 7.10 布局设计 7.11 Java中的鼠标事件 7.12 Java中的键盘事件,4,7.1 AWT简介,在java.a
2、wt包中有许多用来设计GUI的组件类,如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。,5,7.1.1 java.awt 包中的类体系结构,6,7.1.2组件和容器,在学习GUI编程时,组件类(Component)和容器类(Container)是两个必须要理解的概念。 由组件类的子类或间接子类创建的对象称为一个组件。由容器类的子类或间接子类创建的对象称为一个容器。组件不能独立地显示出来,必须将组件放在一定的容器中才可显示出来。Java规定,可以向容器中添加组件。 容器(Container)实际是 Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质
3、,另外还具有容纳其他组件和容器的功能。,7,7.1.2组件和容器,标签,文本框,文本区,按钮,不同组件,8,7.1.3 注意,(1)Button,Scrollbars等类是java.awt包中的类并且是java.awt包中的Component类的子类,Java把由Component类的子类或间接子类创建的对象称为一个组件。,(2)Java把由Container的子类或间接子类创建的对象称为一个容器。,(3)可以向容器添加组件,Component类提供了一个public方法add(),一个容器可以调用这个方法将组件添加到容器中。,(5)Applet类不是包java.awt中的类,它只是和Pane
4、l有继承关系,它是java.applet中的类,不同包中的类可以有继承关系。,(4)容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。,9,7.1.3 注意,(6)Window类表示可自由停泊的顶级窗口,这是一个抽象类,不能实例化,实际程序中经常使用的是其子类Frame。 (7)Panel类可作为容器容纳其他组件,但不能独立存在,必须被添加到其他容器中(如: Frame 或Applet)。,10,7.1.4 AWT事件模型,基本概念: 1、交互:用户界面与用户之间的交流过程,用户界面接受用户的输入命令、执行相应的动作,并把结果输出给用户。 2、事件:发生在用户界面上的用
5、户交互行为所产生的一种效果,如鼠标的各种动作、键盘输入以及发生在组件上的各种动作。 3、事件处理:每发生一个事件,程序都需要作出相应的响应,这就称为事件处理。,11,7.1.4.1 事件控制的要点,Java 最新的事件处理方法是基于授权事件模型。 事件源生成事件并将其发送至一个或多个监听器。 监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,然后返回。,12,7.1.4.2事件,在授权事件模型中,事件是一个描述事件源状态改变的对象 。 通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。 如:按下一个按钮、通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等
6、。,13,7.1.4.3事件源,事件源是一个生成事件的对象。 一个事件源可能会生成不同类型的事件。 事件源提供了一组方法,用于为事件注册一个或多个监听器。 每种事件的类型都有其自己的注册方法。一般形式为: public void addListener (TypeListener e),14,7.1.4.4 AWT采取的事件控制过程,监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口”。 事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。 事件源将在发生事件时向所有注册的监听器发送事件对象。 监听器对象使用事件对象中的信息来确定它们对事件的响应。,15
7、,7.1.4.5按钮单击事件示例,public class MyEventTest extends Panel Button myButton = new Button(蓝色); . . . / 创建面板或其他 GUI 组件 MyListener myAction = new MyListener(); MyButton.addActionListener(myAction); private class MyListener implements ActionListener public MyListener() . . . / 初始化 public void actionPerforme
8、d(ActionEvent event) . . ./需要为事件进行的操作 ,实现了ActionListener接口的监听器,实现了actionPerformed方法,以便根据参数 ActionEvent 对象的信息对事件做出响应,为按钮事件 注册监听器,16,7.1.4.6事件体系结构,17,7.1.4.7 AWT 事件类型 2-1,18,7.1.4.7 AWT 事件类型 2-2,19,7.1.4.8监听器接口,监听器通过实现 java.awt.event 包中定义的一个或多个接口来创建,即在这些接口中定义了各种Java GUI事件处理方法,只有这些接口的实现类的对象才有资格作为监听器。 在
9、发生事件时,事件源将调用监听器定义的相应方法。 有兴趣接收事件的任何监听器类都必须实现监听器接口。,20,7.1.4.9监听器接口列表 2-1,21,7.1.4.9监听器接口列表 2-2,22,7.1.4.10适配器类,为了使事件处理变得简单,Java 为具有多个方法的监听器接口提供适配器类。适配器类实现并提供了一个事件监听器接口中的所有的方法,但这些方法都是空方法。程序员在定义监听器类时可继承适配器类,并只重写所需的方法。,23,7.1.4.10适配器类,适配器类只是为了简化编程而提供的一种中间处理转换工具,使程序员在定义监听器类时可以不必因直接实现监听器接口而被迫重写所有的抽象方法。但因J
10、ava的单继承机制的限制,若要定义的监听器类需要同时能处理两种以上的GUI事件,则只能直接实现有关的监听器接口,而无法只通过继承适配器实现。或者,一旦继承了适配器类,则无法再继承其他所需的父类。,24,7.1.4.11事件源、监听器和监听器接口,事件源描述事件对象中事件的性质。 每个事件源都被映射至一个或多个事件监听器,发生事件时需要调用这些事件监听器。 事件源随后通过将事件对象传递至监听器接口类的方法,将事件信息发送到监听器接口。 监听器分析事件对象找出事件信息,以便给出响应 。,25,7.2.1 文本框,(1)java.awt包中的Textfield类是用来建立文本框的,即TextFiel
11、d类创建的一个对象就是一个文本框。 (2)Textfield类中有下列构造方法: TextField() :如果使用这个构造方法创建文本框对象,则文本框的长度为一个字符长。 TextField(String s ) :如果使用这个构造方法创建文本框对象,则文本框的初始字符串为s。 TextField(int x) :如果使用这个构造方法创建文本框对象,则文本框的长度为x个字符长。 TextField(String s ,int x) :如果使用这个构造方法创建文本框对象,则初始字符串为s,长为x。,一种用来输入文本的GUI组件 只能接受一行输入,26,7.2.1 文本框的方法,setText(
12、String s ):在文本框中设置文本。 getText():获取文本框中的文本。 setEchoChar(char c):设置文本框的回显字符。当用户在文本框中输入文字时,在屏幕上只会看到回显字符,回显字符由参数c来指定。 setEditable(boolean b):指定文本框的可编辑性,默认为可编辑(true)。 addActionListener(ActionListener l):向文本框增加ActionEvent事件监视器(将监视器注册到文本框)。,27,7.2.1 文本框事件,当用户单击按钮、键入文本、使用鼠标或进行其它与界面相关的动作时,都会引发界面事件。Java的java.
13、awt.event包中包含了许多用来处理事件的类和接口。 程序有时需对发生的事件作出反应,如在文本框输入某些字符或当按下按钮时,希望得到某种信息等。,(1)事件源:能够产生事件的对象都可以称为事件源,如文本框、按钮、列表、鼠标等。,(2)监视器:需要一个对象对事件源进行监视,以便对 发生的事件做出处理。事件通过调用相应的方法将某个对象作为自己的监视器。对于文本框,这个方法是:addActionListener(监视器)。,(3)处理事件的接口:监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处理事件。Java规定,为了让监视器这个对
14、象能对事件源发生的事件进行处理,创建监视器对象的类必须声明使用相应的接口,并且实现该接口中的方法,那么当事件源发生事件时,监视器就会自动调用被类实现了的该接口中的方法。,29,7.2.1 处理文本框事件,当在文本框中输入字符并回车时,Java.awt.event中的ActionEvent类将自动创建一个事件对象,并将它传递给方法actionPerformed(ActionEvent e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,30,7.2.1 文本框事件,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,TextField,ActionListe
15、ner,事件对象的getSource()方法,addActionListener(ActionListener l),actionPerformed(ActionEvent e),31,例1:Example8_2、 Example8_2_2,在一个文本框中输入英文单词并回车,而在另一个文本框中立刻显示汉语意思。,注意:,text1.addActionListener(this);的含义为:向文本框text1增加监视器,监视器为当前类(Example8_2小应用程序)的对象“this”。由于Example8_2类使用了接口“ActionListener”: public class Exampl
16、e8_2 extends Applet implements ActionListener,所以Example8_2类的对象可以做为addActionListener (ActionListener l)方法中的参数。因此,可以作为text1的监视器。 在text1中输入文本回车后,监视器就会知道所发生的事件,这时方法: public void actionPerformed(ActionEvent e)会被自动地执行,对所发生的事件作出处理。Java.awt.event包中的类ActonEvent自动创建了一个事件对象,并将它传递给方法 actionPerformed(ActionEvent
17、 e)中的参数e。,33,练习:,在第一个文本框中输入密码并回车,在另一文本框中被显示。,34,7.2.2 文本区,(1)java.awt包中的TextArea类是专门用来建立文本区的,比文本框要大,通常带滚动条。即TextArea类创建的一个对象就是一个文本区。 (2)TextArea类的主要构造方法如下: TextArea() :如果使用这个构造方法创建文本区对象,则文本区的列数和行数取默认值。 TextArea(int x ,int y) :如果使用这个构造方法创建文本区对象,则文本区的行为x,列为y。 TextArea(String s) :如果使用这个构造方法创建文本区对象,则文本区
18、的初始字符串为s。,要接受输入多行文本时使用 可以包括滚动条,35,7.2.2 文本区,TextArea(String s,int x,int y) :如果使用这个构造方法创建文本区对象,则文本区的行为x,列为y,初始字符串是s 。 TextArea(String s,int x,int y,int scrollbar) :如果使用这个构造方法创建文本区对象,则文本区的行为x,列为y,初始字符串是s, scrollbar取值: TextArea.SCROLLBARS_BOTH TextArea.SCROLLBARS_VERTICAL_ONLY TextArea.SCROLLBARS_HORIZ
19、ONTAL_ONLY TextArea.SCROLLBARS_NONE 其他构造方法创建的文本区都自带滚动条。,36,7.2.2 文本区的方法,setText(String s):在文本区中设置文本,同时清除文本区中原有内容。 getText():获取文本区中的文本。 addTextListener(TextListener l):向文本区增加TextEvent事件监视器。 insert(String s ,int x):在指定位置x(列)插入指定文本s。 Append(String s):在文本区中附加文本,即连接到文本区已有文本的后面。,37,7.2.2 处理文本区事件,当用户改变文本区中
20、的内容,如键入字符、删除字符时,java.awt.event中的TextEvent类将自动创建一个事件对象,并将它传递给方法textValueChanged(TextEvent e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,38,7.2.2 文本区事件,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,TextArea,TextListener,事件对象的getSource()方法,addTextListener(TextListener l),textValueChanged(TextEvent e),39,7.2.2 文本区例,1、有两个文本区
21、,修改第一个文本区的内容时,第二个文本区的内容会同步变化。Example8_5 2、有两个文本区,在一个文本区中输入若干个数时,另一个文本区同时对输入的数从小到大排序。 Example8_6,40,7.3 标签,java.awt包中的Label类是用来建立标签的,即Label类创建的一个对象就是一个标签。 可以通过以下任一构造函数来创建: Label( ) : 新建一个空标签。 Label(String labeltext): 新建一个包含给定文本的标签。 Label(String labeltext, int alignment) :新建一个包含给定对齐方式的标签,对齐方式可以为 Label
22、.LEFT、Label.RIGHT 或 Label.CENTER。 Label类的主要方法有: setText(String s) getText() setBackground(Color c) setForeground(Color c),通常用来指明项目的用途 标签不可以被用户编辑,41,7.3 标签,例:让一个标签做监视器,监视一个文本框,当在这个文本框中输入数字后,另一个文本框显示这个数的全部因子。Example10_3,42,7.4 按钮,(1)java.awt包中的Button类是用来建立按钮的,即Button类创建的一个对象就是一个按钮。 (2)Button类中有下列主要方法:
23、 Button()构造方法:如果使用这个构造方法创建按钮对象,则按钮没有名称。 Button(String s ) 构造方法:如果使用这个构造方法创建按钮对象,则按钮的名称为字符串s。 setLabel(String s ):设置按钮的名称。 getLabel():获取按钮的名称。addActionListener(ActionListener l):向按钮增加ActionEvent事件监视器(将监视器注册到按钮)。,按钮是任何GUI都不可或缺的组件 用来捕捉用户操作的最为简便的方式,43,7.4.1 处理按钮事件,当用户单击按钮时,java.awt.event中的ActionEvent类将自
24、动创建一个事件对象,并将它传递给方法actionPerformed(ActionEvent e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,44,7.4.2 按钮事件,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,Button,ActionListener,事件对象的getSource()方法,addActionListener(ActionListener l),actionPerformed(ActionEvent e),45,7.4.2 按钮事件,例1:涉及4个按钮,分别命名为加、减、乘、除。有3个文本框,程序将两个文本框的数字作运算,在第
25、3个文本框中显示结果。Example9_2 例2:习题九第2题。应用程序Exercise9_2,46,7.5 选择框,(1)java.awt包中的Checkbox类是用来建立选择框的,即Checkbox类创建的一个对象就是一个选择框。 (2)Checkbox类中有下列主要方法: Checkbox()构造方法:如果使用这个构造方法创建选择框对象,则选择框前无标题。 Checkbox(String s)构造方法:如果使用这个构造方法创建选择框对象,则选择框前的标题为字符串s。 Checkbox(String s,boolean b)构造方法:如果使用这个构造方法创建选择框对象,则选择框前的标题为字
26、符串s,选择框的状态为b。 Checkbox(String s,boolean b,CheckboxGroup g)构造方法:如果使用这个构造方法创建选择框对象,则选择框前的标题为字符串s,选择框的状态为b,选择框所在的选择框组为g(此方法是为了设置单项选择的)。,用于单选或多选的用户输入,用户可以通过单击选择框来选定或取消选定某选项。,47,7.5.1 选择框的方法,setLabel():设置选择框的标题。 getLabel():获取选择框的标题。 setState(boolean b):设置选择框的状态,单选时设置为false不可用。 getState(boolean b):获取选择框的状
27、态。 addItemListener(ItemListener l):向选择框增加ItemEvent事件监视器(将监视器注册到选择框)。 注:如果在一个容器中添加了个多选择框,而这多个选择框没有使用CheckboxGroup进行分组,那么可以进行多项选择;如果这多个选择框使用CheckboxGroup归成了一组,那么只能进行单项选择。,48,7.5.2 处理选择框事件,当用户将选择框从未选中状态变成选中状态或从选中状态变成未选中状态时,即选择框的状态发生变化时,java.awt.event中的ItemEvent类将自动创建一个事件对象,并将它传递给方法itemStateChanged(Item
28、Event e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,49,7.5.3 选择框事件,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,Checkbox,ItemListener,事件对象的getItemSelectable()方法,addItemListener(ItemListener l),itemStateChanged(ItemEvent e),50,7.5.3 选择框事件,例1:有三种产品的介绍,当选中某个产品时,一个文本区显示该产品的信息,另一个文本区根据购买情况显示价格。Example13_3 例2:统计选票。Example13_
29、5,51,7.6.1 下拉列表,(1)java.awt包中的Choice类是用来建立下拉列表框的,即Choice类创建的一个对象就是一个下拉列表框。 (2)Choice类中有下列主要方法(均为public的): Choice()构造方法:构造下拉列表框。 addItem (String s):向下拉列表中增加一个选项。 getSelectedIndex():返回当前选项的索引,从0开始。 getSelectedItem():返回当前选项的字符串。 insert(String s,int n):将字符串插入下拉列表中的指定位置。 remove(int n):从下拉列表中删除指定的选项。 remo
30、veAll():删除全部选项。 addItemListener(ItemListener):向下拉列表框增加监视器。,用来向用户显示一个下拉列表,52,7.6.1 处理下拉列表事件,当用户选中下拉列表中的选项时,java.awt.event中的ItemEvent类将自动创建一个事件对象,并将它传递给方法itemStateChanged(ItemEvent e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,53,7.6.1 下拉列表事件,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,Choice,ItemListener,事件对象的getItemSe
31、lectable()方法,addItemListener(ItemListener l),itemStateChanged(ItemEvent e),54,7.6.1 下拉列表事件,例: Example14_2,55,7.6.2 滚动列表,(1)java.awt包中的List类是用来建立滚动列表框的,即List类创建的一个对象就是一个滚动列表框。 (2)List类中有下列主要方法(均为public的): List()构造方法:构造滚动列表框,使用默认可见行。 List(int n)构造方法:构造滚动列表框,可见行为n。 List(int n,boolean b)构造方法:构造滚动列表框,可见行
32、为n,b为是否允许多项选择。,56,7.6.2 滚动列表的方法,add(String s):向滚动列表中增加一个选项。 add(String s,int n):向滚动列表的给定位置n增加一个选项。 getSelectedIndex():返回当前选项的索引。 getSelectedItem():返回当前选项的字符串。 remove(int n):从滚动列表中删除指定的选项。 removeAll():删除全部选项。 addActionListener(ActionListener):向滚动列表框增加双击事件的监视器。 addItemListener(ItemListener):向滚动列表框增加单击
33、事件的监视器。,57,7.6.2 处理滚动列表事件,滚动列表框有两种事件:一种是鼠标单击某选项,另一种是鼠标双击某选项。单击事件的事件源获得监视器的方法是addItemListener()。双击事件的事件源获得监视器的方法是addActionListener()。,58,7.6.2 滚动列表事件单击,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,List,ItemListener,事件对象的getItemSelectable()方法,addItemListener(ItemListener l),itemStateChanged(ItemEvent e),59,
34、7.6.2 滚动列表事件双击,事件源: 监视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,List,ActionListener,事件对象的getSource()方法,addActionListener(ActionListener l),actionPerformed(ActionEvent e),60,7.6.2 滚动列表事件,例1:Example14_4 例2: Example14_6,61,7.7.1 面板,(1)Panel类 java.awt包的类Panel是用来建立面板的。因为Panel类是Container(容器)的子类,因此Panel类及它的子类的实例也是一个
35、容器。在一个容器里添加若干个组件后,再放到另一个容器里,就叫做容器的嵌套。,62,7.7.1 面板,(2)ScrollPane类 与Panel创建的容器所不同的是,ScrollPane带有滚动条,称为滚动窗口。但只能向滚动窗口添加一个组件。所以,经常将一些组件添加到一个面板容器中,然后再把这个面板添加到滚动窗口中。ScrollPane有两个构造方法: 1)ScrollPane():创建滚动窗口,滚动条初始不可见,当添加的组件的可见范围大于滚动窗口时,滚动条自动出现。 2)ScrollPane(int a):创建滚动窗口,参数指定滚动条的初始状态。a取下列3个值之一:ScrollPane.SCR
36、OLLBARS_ALWAYSScrollPane.SCROLLBARS_AS_NEEDEDScrollPane.SCROLLBARS_NEVER,63,7.7.2 画布,画布是一个可以在上面绘画的简单组件,不是容器。java.awt包中的类Canvas负责创建画布对象,并在子类中重写父类的方法:paint。需要注意的是,一定要在创建画布的类的构造方法中给出画布的尺寸。,64,7.7.2 画布,例1: 小程序Example11_4。 例2:应用程序Example11_5。,65,7.8.1 窗口,java的java.awt包中的Frame类或子类创建的一个对象就是一个窗口(它也是一个容器)。默认
37、布局是BorderLayout布局。Frame类的构造方法是:Frame():创建无名窗口Frame(String s):创建名字为字符串s的窗口 Frame类的主要方法: setVisible(boolean b):设置窗口是否可见。 pack():用紧凑方式显示窗口。若不使用该方法,窗口初始显示时可能看不到窗口的组件,当用户调整窗口的大小时才能看到这些组件。,66,7.8.1 窗口,setTitle(String name):设置窗口的名字。 getTitle():获取窗口的名字。 setResizable(boolean b):设置窗口的大小是否可调。 例:学生成绩登记表的应用程序Exa
38、mple15_3。,67,7.8.2 向窗口增加菜单,菜单的创建需要菜单条、菜单和菜单项。菜单项添加到菜单里,菜单添加到菜单条里,菜单条再通过setMenuBar(MenuBar)方法添加到窗口中。 1)菜单条: java.awt包中的MenuBar类创建的对象就是一个菜单条。 2)菜单: java.awt包中的Menu类创建的对象就是一个菜单。,Menu类的主要方法:,Menu():建立一个空标题的菜单 Menu(String s):建立一个标题为s的菜单。 add(MenuItem item):向菜单中添加由参数item指定的菜单选项对象。 add(String s):向菜单增加指定的选项
39、。 getItem(int n):得到指定索引处的选项。 getItemCount():得到菜单选项数目。 insert(MenuItem item,int n):在菜单的指定位置插入菜单选项。 insert(String s,int n):在菜单的指定位置插入菜单选项。 remove(int n):删除菜单的指定位置的菜单选项。 removeAll():删除菜单的所有选项。,69,7.8.2 向窗口增加菜单,3)菜单项: MenuItem类是负责创建菜单项的,即MenuItem的一个实例就是一个菜单项。菜单项将被放在菜单里。,MenuItem类的主要方法:,MenuItem():构造无标题菜
40、单项。 MenuItem(String s):构造有标题菜单项。 setEnabled(boolean b):设置当前菜单项是否可被选择。 getLabel():得到菜单选项的名字。 addActionListener(ActionListener):向菜单项增加监视器。,71,7.8.2 处理菜单项事件,当用户用鼠标单击某个选项时,java.awt.event包中的ActionEvent类将自动创建一个事件对象,并将它传递给方法actionPerformed(ActionEvent e)中的参数e,监视器将自动调用该方法,对发生的事件做出处理。,72,7.8.2 菜单项上的事件,事件源: 监
41、视器: 处理事件的接口: 实现接口中的方法: 返回事件源的方法:,MenuItem,ActionListener,事件对象的getSource()方法,addActionListener(ActionListener l),actionPerformed(ActionEvent e),73,7.8.2 菜单项上的事件,例:计算常见的几何图形的面积。Example15_6,74,7.8.3 使用适配器,问题:窗口标题栏中的关闭按钮不工作。 这是因为程序中没有使用适配器或未实现WindowListener接口。 适配器类和监听器接口使用对比: 详见第7章例中的TestAdapter.java和Te
42、stListener.java。,75,7.9 建立对话框,(1)对话框使用java.awt中的Dialog类创建,它也是一个容器。 (2)对话框的主要方法: Dialog(Frame f,String s):构造一个有标题的初始不可见的对话框。 S设置名字, f设置对话框所依赖的窗口。 Dialog(Frame f,String s,Boolean b):构造一个带有模式的对话框,b为true有模式。,76,7.9.1 对话框的主要方法,getTitle():获取对话框的标题。 setTitle(String s):设置对话框的标题。 setModal(boolean):设置对话框的模式。
43、setSize(int a,int b):设置对话框的大小。 setVisible(boolean):显示或隐藏对话框。 对话框必须依赖一个窗口,因此要建立对话框,必须首先建立一个窗口类。 对话框的默认布局是BorderLayout,在创建对话框时,最好有对话框大小的设置。 例:Example16_2,77,7.9.2 FileDialog类,(1)FileDialog是Dialog类的子类,它创建的对象称为文件对话框,文件对话框是一个打开文件和保存文件的对话框窗口。 (2)文件对话框的主要方法: FileDialog(Frame f, String s,int mode):建立文件对话框,f
44、为对话框所依赖的窗口对象,s是对话框的名字,mode的取值为Filedialog.LOAD或Filedialog.SAVE,决定对话框是打开文件模式或是保存文件模式。 getDirectory():获取当前文件对话框中的文件的所属目录。 getfile():获取当前文件对话框中显示的文件的字符串表示,如果不存在则为null。 例:Example16_3,78,7.10 布局设计,所谓布局设计就是控制组件在容器中的位置。Java中设置布局的类也叫布局管理器,最顶级的布局管理器是LayoutManager接口,它在java.awt 包中定义了常用的五种布局类: FlowLayout(流式布局) B
45、orderLayout (边界布局) GridLayout(网格布局) GridBagLayout(网格包布局) CardLayout (卡片布局),79,7.10 布局设计,布局类型的选用 每个布局管理器都有自己特定的用途。 要按行和列显示几个同样大小的组件,GridLayout 会比较合。 要在尽可能大的空间里显示一个组件,就要选择 BorderLayout 或 GridBagLayout。,80,7.10 布局设计,如何设置布局 每个容器(Container对象)都有一个与它相关的缺省的布局管理器。 - Applet 的缺省布局是 FlowLayout 。 在没有设置新的布局前,在容器中
46、添加组件都按照该容器的缺省布局排列。 可以通过setLayout( )方法为容器设置新的布局。,81,7.10.1 FlowLayout布局,FlowLayout是Panel型容器和Applet型容器的默认使用的布局。遵循这种布局的容器将其中的组件按加入的先后顺序从左到右排列,一行排满之后就转向下一行继续从左到右排列,每一行中的组件都居中排列。自动调用组件的setPreferredSize()方法,使用组件的最佳尺寸来显示。 在该布局下,如果改变窗口的大小,那么组件的排列方式也会随着变化,但是,组件的大小不会改变,总是保持自然状态。 对于一个原本不使用FlowLayout布局的容器,若需要将其
47、布局改为FlowLayout,可以用Container类提供的“setLayout(new FlowLayout();”方法为容器设定布局。,82,7.10.1 FlowLayout布局,FlowLayout的构造函数有: FlowLayout( ):生成一个默认的流式布局。 FlowLayout(int alignment):可以设定每一行组件的对齐方式 。 FlowLayout(int alignment,int hgap,int vgap):可以设定组件间的水平和垂直距离。,FlowLayout mylayout = new FlowLayout(); FlowLayout exLayo
48、ut = new FlowLayout(FlowLayout.RIGHT); setLayout(exlayout); / 为容器设置新布局,83,7.10.2 BorderLayout布局,BorderLayout是Frame型容器和Dialog型容器默认使用的布局。遵循这种布局的容器,将其容器内的空间简单地划分为东、南、西、北、中5个区域,每加入一个组件都应指明把这个组件加在哪个区域中。 如果容器中需要加入超过5个组件,就必须使用容器的嵌套或改用其它的布局策略。 BorderLayout构造方法如下: public BorderLayout() 所包含的组件间没有间距。 public Bo
49、rderLayout(int hgap,int vgap) 按参数指定的组件间间距构造布局管理器。 对于一个原本不使用BorderLayout布局的容器,若需要将其布局改为BorderLayout,可以用“setLayout(new BorderLayout();”方法为容器设定布局。,84,7.10.2 BorderLayout布局,BorderLayout 类定义了几个常量值以指定相应区域: BorderLayout.NORTH 对应容器的顶部 BorderLayout.EAST 对应容器的右部 BorderLayout.SOUTH 对应容器的底部 BorderLayout.WEST 对应
50、容器的左部 BorderLayout.CENTER 对应容器的中部 加入组件方法: void add(Component Obj, int region);,. . . setLayout(new BorderLayout(); Button btnEast=new Button(东); Button btnWest=new Button(西); Button btnNorth=new Button(北); Button btnSouth=new Button(南); Button btnCenter=new Button(中); add(btnEast,BorderLayout.EAST);
51、 add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnSouth,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER); . . .,85,7.10.2 BorderLayout布局,注意: (1)如果不指定方向,则所有的组件都居中放置。 (2)BorderLayout不能保持组件的自然状态,但是可以保证南北方向组件的高度以及东西方向组件的宽度。 (3)当向BorderLayout布局的容器中添加了多余5个的组件时,后面添加的组件会占用前面添加
52、组件的位置。,86,7.10.3 GridLayout,GridLayout布局是使用较多的布局,其基本布局策略是把容器划分成若干行乘若干列的网格区域。组件就位于这些划分出来的小格中。GridLayout比较灵活,划分多少网格由程序自由控制,而且组件定位也比较精确。 GridLayout构造方法如下: public GridLayout() 使用默认设置,所有组件位于一行中,各占一列。 public GridLayout(int rows,int cols) 通过参数指定行数和列数。 public GridLayout(int rows,int cols,int hgap,int vgap) 通过参数指定行数、列数以及组件间的水平间距和垂直间距(单位是像素)。,. . . Button btn; / 声明按钮数组 String str=1,2,3,4,5,6,7,8,9; setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 创建按钮数组 for(int i=0;istr.length;i+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年轨道人才发展有限公司招聘笔试参考题库含答案解析
- 2025年郑州登封建设投资集团招聘笔试参考题库含答案解析
- 2025年湖南中安密码测评中心招聘笔试参考题库含答案解析
- 2025年国航股份机务工程部高招聘笔试参考题库含答案解析
- 视频直播服务器租赁合同
- 农产品冷藏续租合同
- 体育教练聘用合同范例
- 养猪场租赁合同:养殖废弃物利用
- 电信营业厅翻新施工合同
- 艺术品冷藏库租赁合同
- 2022-2024年浙江中考英语试题汇编:完形填空(学生版)
- 中试部培训资料
- 【可行性报告】2024年第三方检测相关项目可行性研究报告
- 2024解析:第三章物态变化-基础练(原卷版)
- 藏医学专业生涯发展展示
- 信息安全保密三员培训
- 2024新版《药品管理法》培训课件
- DB41T 2302-2022 人工影响天气地面作业规程
- 【初中语文】2024-2025学年新统编版语文七年级上册期中专题12:议论文阅读
- 四川省成都市2022-2023学年高二上学期期末调研考试物理试题(原卷版)
- 2024政务服务综合窗口人员能力与服务规范考试试题
评论
0/150
提交评论