第9章 AWT组件库.ppt

上传人:啊飒飒 文档编号:11877091 上传时间:2021-10-09 格式:PPT 页数:130 大小:407.50KB
返回 下载 相关 举报
第9章 AWT组件库.ppt_第1页
第1页 / 共130页
第9章 AWT组件库.ppt_第2页
第2页 / 共130页
第9章 AWT组件库.ppt_第3页
第3页 / 共130页
第9章 AWT组件库.ppt_第4页
第4页 / 共130页
第9章 AWT组件库.ppt_第5页
第5页 / 共130页
点击查看更多>>
资源描述

《第9章 AWT组件库.ppt》由会员分享,可在线阅读,更多相关《第9章 AWT组件库.ppt(130页珍藏版)》请在三一文库上搜索。

1、第9章 AWT组件库,按钮,按钮(Button)是Java图形用户界面的基本组件之一。 按钮有两个构造方法: public Button( ) public Button(String label),构造一个不带标签的按钮,构造一个带标签的按钮,按钮,例: Button b = new Button(“Sample” ); /构造的是一个标签为“Sample”的按钮 当用户用鼠标单击按钮时,AWT事件处理系统将向按钮发送一个ActionEvent事件对象。 应用程序需要为按钮注册事件监听程序并实现ActionListenner接口。,程序9-1,目标:每当单击按钮,会在屏幕上交替显示出两条不同

2、信息。 import java.awt.*; import java.awt.event.*; class ButtonExample extends WindowAdapter implements ActionListener Frame f; Button b; TextField tf; int tag = 0; public static void main(String args ) ButtonExample be = new ButtonExample( ); be.go( );,ublic void go( ) f = new Frame(ButtonExample); b

3、= new Button(Sample); b.addActionListener(this); f.add(b,South); tf = new TextField( ); f.add(tf,Center); f.addWindowListener(this); f.setSize(300,150); f.setVisible(true); / 实现ActionListener接口中的actionPerformed( )方法 public void actionPerformed(ActionEvent e) String s1 = You have pressed the Button!;

4、 String s2 = You do another time!;,if (tag=0) tf.setText(s1); tag = 1; else tf.setText(s2); tag = 0; /* 覆盖WindowAdapter类中的windowClosing( )方法*/ public void windowClosing(WindowEvent e) / 结束程序运行 System.exit(0); ,复选框,复选框(Checkbox)是一个带标签的小方框,具有“开”与“关”两种状态可供用户选择。 用户对复选框的操作将引发ItemEvent事件,该事件需要由实现了ItemList

5、ener接口的类处理。,复选框,在ItemEvent类中定义了getStateChange( )方法,通过该方法可以判断用户对复选框所执行的操作是“开”还是“关” ,其返回值为常量Item.DESELECTED或Item.SELECTED。 ItemEvent类中还定义了getItem( )方法,该方法返回值为一字符串,表示用户操作所涉及的复选框的标签内容。,复选框,复选框的三种基本构造方法: (1)public Checkbox( )构造一个不带标签、初始状态为“关”的复选框。 (2)public Checkbox(String label)构造一个带标签、初始状态为“关”的复选框。 (3)

6、public Checkbox(String label, boolean state)构造一个带标签的复选框,其初始状态由boolean 型变量state决定。,复选框,例如: Checkbox one = new Checkbox(“One”, false); /*构造一个标签为“One”、初始状态为“关”的复选框。*/,程序9-2:,目标:创建名为one,two,three的三个复选框,并将这三个复选框放入框架中部的面板中。 import java.awt.*; import java.awt.event.*; class CheckboxExample extends WindowAd

7、apter implements ItemListener Frame f; Panel p; Checkbox one,two,three; TextField tf;,ublic static void main(String args) CheckboxExample ce = new CheckboxExample( ); ce.go( ); public void go( ) f = new Frame(Checkbox Example); p = new Panel( ); one = new Checkbox(One); two = new Checkbox(Two); thre

8、e = new Checkbox(Three); / 注册事件监听程序 one.addItemListener(this); two.addItemListener(this); three.addItemListener(this);,创建三个复选框,.add(one); p.add(two); p.add(three); f.add(p,Center); tf = new TextField( ); f.add(tf,South); / 注册事件监听程序 f.addWindowListener(this); f.setSize(300,150); f.setVisible(true); /

9、*实现ItemListener接口中的itemStateChanged( )方法*/ public void itemStateChanged(ItemEvent e) String state = deselected; String st ;,if (e.getStateChange( ) = ItemEvent.SELECTED) state = selected; st = e.getItem( ) + +state; tf.setText(st); /* 覆盖WindowAdapter类中的windowClosing( )方法*/ public void windowClosing(

10、WindowEvent e) / 结束程序运行 System.exit(0); ,复选框组单选按钮,复选框的两种特殊构造方法: public Checkbox(String label, boolean state, CheckboxGroup group) public Checkbox(String label, CheckboxGroup group, boolean state) CheckboxGroup类型的参数:可以创建出多个从属于同一个复选框组(Check-boxGroup)的、带标签的复选框,复选框的初始状态由boolean型变量state指定。,复选框组单选按钮,例如: C

11、heckboxGroup cbg = new CheckboxGroup( ); Checkbox one = new Checkbox(One,cbg,false); Checkbox two = new Checkbox(Two,cbg,false); Checkbox three = new Checkbox(Three,cbg,true);,复选框组单选按钮,创建了三个从属于复选框组cbg的复选框,其中前两个的初始状态为“关”,第三个的初始状态为“开”,它们的标签分别为One,Two 和Three。,复选框组单选按钮,在某一时刻,同一组的复选框只能有一个被选为“开”状态,因此,复选框实

12、际上已经变成了单选按钮(Radio Button)。这时,复选框的外观会有所改变,标签前的小方框将变成圆圈。,程序9-3:,目标:构造三个从属于cbg复选框组的复选框(也可以叫单选按钮)。 import java.awt.*; import java.awt.event.*; class CheckboxGroupExample extends WindowAdapter implements ItemListener Frame f; Panel p; CheckboxGroup cbg; Checkbox one,two,three; TextField tf;,ublic static

13、void main(String args) CheckboxGroupExample ce = new CheckboxGroupExample(); ce.go(); public void go() f = new Frame(CheckboxGroup Example); p = new Panel(); cbg = new CheckboxGroup(); one = new Checkbox(One,cbg, false); two = new Checkbox(Two,cbg, false); three = new Checkbox(Three,cbg, true); / 注册

14、事件监听程序 one.addItemListener(this); two.addItemListener(this); three.addItemListener(this);,创建三个从属于同一个组的复选框,.add(one);p.add(two);p.add(three); f.add(p,Center); tf = new TextField(); tf.setText(Three selected);f.add(tf,South); / 注册事件监听程序 f.addWindowListener(this); f.setSize(300,150);f.setVisible(true);

15、 /* 实现ItemListener接口中的itemStateChanged( )方法*/ public void itemStateChanged(ItemEvent e) String st ; st = e.getItem() +“ selected ”; tf.setText(st); /* 覆盖WindowAdapter类中的windowClosing( )方法*/ public void windowClosing(WindowEvent e) System.exit(0); ,选择框,选择框(Choice)是一个下拉式菜单。 用户对选择框的操作将引发ItemEvent事件,该事件

16、需要由实现了ItemListener接口的类进行处理。 其构造方法为: public Choice(),选择框,注意刚构造出来的选择框中并没有实际内容,需要使用addItem()方法为其添加新的选项。 例如: Choice c = new Choice(); c.addItem(“First”); c.addItem(“Second”); c.addItem(“Third”);,程序9-4:,目标:创建一个选择框。 import java.awt.*; class ChoiceExample Frame f; Choice c; Label l; public static void main

17、(String args) ChoiceExample ce = new ChoiceExample(); ce.go(); ,void go() f = new Frame(); f.setLayout(new FlowLayout(); l = new Label(your choice : ); f.add(l); c = new Choice(); c.addItem(First); c.addItem(Second); c.addItem(Third); f.add(c); f.setSize(250,160); f.setVisible(true); ,画布,画布(Canvas)是

18、一块空白区域,可用于绘画、输出文本信息或者接收键盘和鼠标输入。 构造方法为: public Canvas( ),画布,画布可对各类事件进行监听,要在程序中实现 KeyListener, MouseMotionListener MouseListener 等接口。 必须调用Canvas类的requestFocus( )方法。,程序9-5:,目标:创建一个画布并实现KeyListener 和MouseListener接口。 import java.awt.*; import java.awt.event.*; import java.util.*; public class MyCanvas im

19、plements KeyListener,MouseListener Canvas c; String s = ; TextField t;,ublic static void main(String args) Frame f = new Frame(Canvas); MyCanvas mc = new MyCanvas(); mc.c = new Canvas();mc.t = new TextField(); f.add(South,mc.t);f.add(Center,mc.c); f.setSize(300,150); mc.c.addMouseListener(mc); mc.c.

20、addKeyListener(mc);f.setVisible(true); / 实现KeyListener接口中的方法 public void keyTyped(KeyEvent ev) t.setText(keyTyped); s += ev.getKeyChar(); / 将用户键入的字符写到画布上 c.getGraphics().drawString(s,0,20); ,ublic void keyPressed(KeyEvent ev) public void keyReleased(KeyEvent ev) t.setText(keyReleased); / 实现MouseList

21、ener接口中的方法 public void mouseClicked (MouseEvent ev) t.setText(mouseClicked); / 强制画布获取输入焦点 c.requestFocus(); public void mousePressed(MouseEvent ev) t.setText(mousePressed); public void mouseReleased(MouseEvent ev) t.setText(mouseReleased); public void mouseEntered(MouseEvent ev) t.setText(mouseEnter

22、ed); public void mouseExited(MouseEvent ev) t.setText(mouseExited);,标签,标签(Label)对象通常只用于显示提示性的文本信息。 构造方法有三种形式: public Label( )构造一个空标签 。 public Label(String text) 构造一个以左对齐方式显示指定字符串的标签 。 public Label(String text, int alignment)构造一个显示指定字符串的标签,字符串对齐方式由int型参数alignment指定(其值可为Label.LEFT,Label.RIGHT和 Label.C

23、ENTER;分别表示左对齐、右对齐和居中)。,标签,例如: Labell = newLabel(Hello“,LabelRIGHT); /该命令构造一个以右对齐方式显示的标签。 可以使用setText(String text)方法修改显示在标签上的字符串。,程序9-6:,目标:创建三个标签。 import java.awt.*; public class LabelExample static public void main(String args) Frame f; Label l1,l2,l3; f = new Frame(Label Example); f.setLayout( new

24、 GridLayout(3,1,30, 30); l1 = new Label( Hello, this is Label1 ) ; l2 = new Label( Hello, this is Label2 ) ; l3 = new Label( Hello, this is Label3 ) ; f.add(l1);f.add(l2);f.add(l3); f.setSize(300,200); f.setVisible(true);,文本域,文本域(TextField)是一个单行的文本输入框。 四种构造方法: public TextField( ) 构造一个空文本域 。 public T

25、extField(String text) 构造一个显示指定初始字符串的文本域,String型参数text指定要显示的初始字符串。 public TextField(int columns) 构造一个具有指定列数的空文本域,int型参数指定文本域的列数。 public TextField(String text, int columns) 构造一个具有指定列数、显示指定初始字符串的文本域,String型参数指定要显示的初始字符串,int型参数指定文本域的列数。,文本域,例如: TextFieldtf = new TextField(Single Line ,30); /*构造一个列数为30、初

26、始字符串为Single Line的文本域。*/,五种构造方法,(1)public TextArea( ) 构造一个有水平和垂直滚动杠的空文本区。 (2)public TextArea(String text) 构造一个有水平和垂直滚动杠并显示初始文本内容的文本区。 (3)public TextArea(int rows, int columns)构造一个有水平和垂直滚动杠并具有指定行数和列数的文本区。,五种构造方法,(4)public TextArea(String text, int rows, int columns)构造一个有水平和垂直滚动杠、具有指定行数和列数并显示初始文本内容的文本区

27、。 (5)public TextArea(String text, int rows, int columns, int scrollbars)构造一个具有指定行数、列数及滚动杠并显示初始文本内容的文本区。,文本区,参数: String型参数指定要显示的初始文本内容; int型参数rows和columns分别指定文本区的行数和列数;,文本区参数:,int型参数scrollbars指定要显示的滚动杠,它有四种可能的取值: SCROLLBARS_BOTH同时显示水平和垂直滚动杠。 SCROLLBARS_VERTICAL_ONLY只显示垂直滚动杠。 SCROLLBARS_HORIZONTAL_ONL

28、Y只显示水平滚动杠。 SCROLLBARS_NONE两个滚动杠都不显示。,文本区,例如: TextAreat=newTextArea(Initial text“,4,30); /*这条命令构造一个4行、30列、显示初始字符串“Initial text”的文本区。*/,文本区,在TextArea类中定义了多种对文本区进行操作的方法,例如: append(String)将指定文本追加到文本区。 insert(String, int)将指定文本插入到文本区的特定位置。 replaceRange(String, int, int)用指定文本替换文本区中的部分内容。,文本区,使用setEditable(

29、boolean)方法可将文本区设置为不可编辑或可编辑状态。 当需要识别用户“输入完成”时,通常要在文本区旁放置一个Apply或Commit之类的按钮。,程序9-7:,目标: 创建一个文本域和两个文本区,通过事件处理程序,用户在文本域和第一个文本区上进行操作所引发的事件名称会显示在第二个文本区中。,import java.awt.*; import java.awt.event.*; public class TextExample implements ActionListener,TextListener Frame f; TextField tf1; TextArea ta1,ta2; s

30、tatic public void main(String args) TextExample te = new TextExample(); te.go(); ,public void go() f = new Frame(Text Example); f.setLayout( new FlowLayout() ); tf1 = new TextField(Init,20); tf1.addActionListener(this); tf1.addTextListener(this); ta1 = new TextArea(Initial text,4,30); ta1.addTextLis

31、tener(this); ta2 = new TextArea(Only horizontal scrollbar , 4, 30,TextArea.SCROLLBARS_ HORIZONTAL_ONLY); ,f.add(tf1); f.add(ta1); f.add(ta2); f.setSize(300,300); f.setVisible(true); public void actionPerformed(ActionEvent e) ta2.append(nActionPerformed); public void textValueChanged(TextEvent e) ta2

32、.append(nTextValueChanged); ,文本组件,虽然TextArea和TextField是两个不同的类,但是如果查阅名为TextComponent类的文档,就会发现这个类定义了很多TextArea类和TextField类共有的方法,这是因为该类是TextArea类和TextField类的父类。,TextComponent类中定义的主要方法,getSelectedText( )从文本组件中提取被选中的文本内容。 getText( )从文本组件中提取所有文本内容。 select(int, int)在文本组件中选中部分内容。 selectAll( )在文本组件中选中所有内容。 s

33、etEditable(boolean)设置为可编辑或不可编辑状态。 setText(String)设置文本组件中的文本内容。,列表,列表(List)是可供用户进行选择的一系列可选项,它支持单项选择和多项选择。 三种构造方法: public List( ) 构造一个单选列表。 public List(int rows)构造一个显示指定项数的单选列表,其中int型参数指定要显示的项数。 public List(int rows, boolean multipleMode)构造一个显示指定项数的列表。其中int型参数指定要显示的项数,boolean型参数指定该列表是单选(false)列表还是多选(t

34、rue)列表。使用addItem( )方法向列表中加入可选项。,列表,例如: List l = newList(4,false); /这条命令构造一个显示4项的单选列表。,列表,当用户单击列表中的可选项时,将引发ItemEvent事件,该事件需要ItemListener接口中的itemStateChanged()方法进行处理。 当用户双击列表中的可选项时,将引发ActionEvent事件,该事件需要由ActionListener接口中的actionPerformed()方法进行处理。,程序9-8:,目标:构造一个显示5个可选项的单选列表,通过ItemListener接口中的itemStateC

35、hanged( )方法,用户的选择被显示在窗口底部。 import java.awt.*; import java.awt.event.*; public class ListExample extends Frame implements ItemListener Panel p; List theList; TextField tf; ListExample( String s ) super( s ); ,ublic static void main( String args ) ListExample le = new ListExample(List Example ); le.in

36、it(); void init() / 构造一个显示5个可选项的单选列表 theList = new List(5,false ); theList.addItem( Monday ); theList.addItem( Tuesday ); theList.addItem( Wednesday ); theList.addItem( Thursday ); theList.addItem( Friday ); theList.addItem( Saturday ); theList.addItem( Sunday );,/ 注册ItemEvent事件监听程序 theList.addItemL

37、istener(this); p = new Panel(); p.add(theList ); add(p,Center); tf = new TextField(); add(tf,South); setSize(300,200); setVisible(true); / 实现ItemListener接口中的方法 public void itemStateChanged(ItemEvent e) tf.setText(theList.getSelectedItem(); ,框架,框架是一种带标题框和边框并且能够改变大小的窗口。 两种构造方法: (1) Frame( )构造一个没有标题的框架

38、。 (2) Frame(String)构造一个显示指定标题的框架。,框架,例如: Frame f = new Frame(“Frame Example”);/*这条命令构造一个标题为“Frame Example”的框架。*/,框架,框架的默认布局管理器是BorderLayout。 框架的大小可用setSize( )方法设定,然而更常用的方法是使用pack( )。 pack( )能够使布局管理器进行计算,得出一个适当的框架大小,使得框架以紧缩形式包容其中的组件。,框架,框架可对多种事件进行监听。 框架能够作为单独窗口使用。 当用户从窗口控制菜单中选择关闭窗口时,将引发WindowEvent事件,

39、可以用WindowListener接口中的WindowClosing( )方法对此进行处理。,框架,如果需要监听键盘事件,最好还是在框架中加入画布或面板之类的组件,然后再通过这类组件对键盘事件进行监听。,面板,面板通常只作为纯粹的容器来使用,它不能像框架、窗口或对话框那样独立存在, 在面板中也可对多种事件进行监听。与画布类似,当处理键盘事件时,需要事先取得焦点。,面板,两种构造方法: (1) Panel() 构造一个使用默认布局管理器(FlowLayout)的面板。 (2) Panel(LayoutManager) 构造一个使用指定布局管理器的面板,面板,例如: Panel p = new P

40、anel( ); /*这条命令构造一个使用FlowLayout布局管理器的面板。*/,对话框,对话框(Dialog)是与框架类似的可移动窗口,它与框架的区别在于具有较少的修饰并且能够被设置为“模式(modal)”窗口在该窗口被关闭之前,其他窗口无法接收任何形式的输入。,对话框,四种构造方法: (1) public Dialog(Frame parent)构造一个没有标题的对话框。 (2) public Dialog(Frame parent, boolean modal) 构造一个没有标题的对话框,boolean型参数指定对话框是否为模式窗口。,对话框,四种构造方法:,(3) public D

41、ialog(Frame parent, String title) 构造一个显示指定标题的对话框。 (4) public Dialog(Frame parent, String title, boolean modal) 构造一个显示指定标题的对话框,boolean型参数指定对话框是否为模式窗口。,对话框,例如: Dialog d = new Dialog(f, Dialog,true); /*这条命令构造一个标题为Dialog的模式对话框,该对话框由框架f所拥有。*/,对话框,刚刚创建的对话框是不可见的,需要调用setVisible(true)方法才能将其显示出来。 当对话框不需要显示时,调

42、用setVisible(false)方法可以将一个对话框隐藏起来。 对话框可对各种窗口事件(WindowEvent)进行监听。,程序9-9:,目标:构造对话框,单击其中的按钮时,显示对话框。 import java.awt.*; import java.awt.event.*; public class DialogExample extends WindowAdapter implements ActionListener Frame f;Button b;Dialog d; static public void main(String args) DialogExample de = ne

43、w DialogExample(); de.go(); public void go() f = new Frame(Dialog Example); b = new Button(Show Dialog);,b.addActionListener(this); f.add(South,b); d = new Dialog(f,Dialog,true); d.add(Center,new Label(Hello,Im a Dialog); d.pack(); d.addWindowListener(this); f.setSize(250,150);f.setVisible(true); pu

44、blic void actionPerformed(ActionEvent e) / 显示对话框d.setVisible(true); public void windowClosing(WindowEvent e) / 隐藏对话框 d.setVisible(false);,文件对话框,文件对话框(FileDialog)是一种用于进行文件选择的组件,它是一个独立并且可移动的窗口,允许用户对文件名进行浏览和选择。,文件对话框,文件对话框可被分为两种类型: (1)一种用于装入(load)或者说打开(open)文件; (2)另一种用于保存文件。 文件对话框FileDialog类是对话框Dialog类

45、的子类。,构造方法,(1) public FileDialog(Frame parent)构造一个不带标题、用于装入文件的文件对话框。 (2) public FileDialog(Frame parent, String title)构造一个带标题、用于装入文件的文件对话框String型参数title指定对话框的标题。,(3) public FileDialog(Frame parent, String title, int mode) 构造一个带标题的文件对话框String型参数title指定对话框的标题,int型参数mode指定对话框的类型(它有两种可取值,分别为LOAD和 SAVE。前者

46、表示对话框是用于装入文件,后者表示对话框是用于保存文件)。,文件对话框构造方法,文件对话框,如: Filedialog fd = new FileDialog(f, FileDialog); /*这条命令构造一个标题为“FileDialog”的文件对话框,该对话框用于选择需要装入的文件,它的拥有者是框架f。*/,文件对话框,需要调用setVisible(true)方法将文件对话框显示出来。 对于来自文件对话框的事件,一般都无需进行处理。,文件对话框,当用户进行文件选择之后,可以通过getFile( )方法取得用户所选择的文件名。 FileDialog类中还定义了getDirectory(),s

47、etDirectory( )和setFilenameFilter( )等方法,可用于取得文件路径、设定文件路径或设定文件名过滤器。,程序9-10:,目标:创建一个文件对话框,当用户单击框架南部的按钮时,该对话框被显示出来。用户进行选择之后,所选文件的路径和文件名将被显示在框架中部的文本区内。 import java.awt.*; import java.awt.event.*; public class FileDialogExample implements ActionListener Frame f;Button b; TextArea ta;FileDialog fd; static

48、public void main(String args) FileDialogExample fde = new FileDialogExample(); fde.go();,public void go() f = new Frame(FileDialog Example); b = new Button(Show FileDialog); b.addActionListener(this); f.add(South,b); ta = new TextArea(); f.add(Center,ta); fd = new FileDialog(f,FileDialog); f.setSize

49、(350,150); f.setVisible(true); public void actionPerformed(ActionEvent e) fd.setVisible(true); ta.setText(Directory :+ fd.getDirectory(); ta.append(nFilename :+fd.getFile();,菜单组件,菜单组件(MenuComponent)是一种特殊组件,它不能被放入普通的容器,也不能用布局管理器进行控制,它只能被放入一种称为“菜单容器”,即实现 MenuContainer接口的容器中。 与菜单组件有关的类包括MenuBar,MenuIte

50、m,Menu和CheckboxMenuItem等。,菜单(Menu)的继承关系图:,菜单栏,菜单栏(MenuBar)是窗口中的主菜单,用来包容一组子菜单。 构造方法:MenuBar(),菜单栏图:,菜单,菜单(Menu)中最基本的是下拉菜单。,菜单,下拉菜单可分为两种类型: 一种是tear-off菜单, 另一种是非tear-off菜单。 区别: 当鼠标键被释放后,tear-off菜单的内容仍然显示在屏幕上。,菜单,三种构造方法: (1) public Menu() 构造一个不带标签的非tear-off菜单。 (2) public Menu(String label) 构造一个带指定标签的非te

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1