《第4章图形用户界面设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第4章图形用户界面设计精选文档.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章章 图形用户界面图形用户界面设计设计本讲稿第一页,共七十页第第 4 章章 主要内容主要内容1、Applet及及awt类包类包2、文本组件及按钮类、文本组件及按钮类3、面板与布局管理、面板与布局管理4、事件处理、事件处理5、常用图形用户界面组件、常用图形用户界面组件本讲稿第二页,共七十页4.1awt类包及类包及Applet4.1.1 AppletApplet是一个功能非常强大的能够是一个功能非常强大的能够嵌入到嵌入到HTML页面中,并在浏览器中自页面中,并在浏览器中自动执行的动执行的Java程序。当使用浏览器对程序。当使用浏览器对一个包含一个包含Applet的的Web页面进行浏览页面进行
2、浏览时,浏览器将从时,浏览器将从Web服务器下载服务器下载Applet程序到本地执行。程序到本地执行。本讲稿第三页,共七十页1、Applet的定义的定义public class Applet extends Panel public Applet();public void start();public void stop();public URL getDocumentBase();本讲稿第四页,共七十页2、Java Applet程序的一般形式程序的一般形式import java.applet.*;public 类名类名 extends Applet public void init();p
3、ublic void start();public void stop();public void destroy();4个生个生命周期命周期本讲稿第五页,共七十页3、Java Applet程序的运行程序的运行本讲稿第六页,共七十页4.1.2 awt类包类包(1)基本的窗口类:)基本的窗口类:Frame、Dialog(2)基本的)基本的GUI组件类:组件类:Button、Label、TextField、TextArea、Checkbox(3)基本的事件接口:)基本的事件接口:ActionListener、WindowListener、MouseListener、KeyListener(4)界面
4、布局控制类:)界面布局控制类:FlowLayout、BorderLayout、GridLayout、CardLayout(5)基本的绘图支持类:)基本的绘图支持类:Graphics、Canvas本讲稿第七页,共七十页4.2文本组件及按钮类文本组件及按钮类本讲稿第八页,共七十页4.2.1文本组件类文本组件类1、TextComponent 类类方法名方法名功能功能setText(String t)设设置文本内容置文本内容getText()获获取文本内容取文本内容isEdit()检测检测文本的可文本的可编辑编辑性性setEdit(Boolean b)检测检测文本的可文本的可编辑编辑性性getSele
5、ctedText()获获取取选选取文本内容取文本内容select(int selStart,intselEnd)选选取文本内容取文本内容本讲稿第九页,共七十页2、TextField类类文本框文本框TextField 是对单行文本进行编辑是对单行文本进行编辑的组件。它用来接受用户的输入码或显的组件。它用来接受用户的输入码或显示可编辑的文本。示可编辑的文本。本讲稿第十页,共七十页(2)创建文本框)创建文本框TextFieldtext=new TextField(String str);本讲稿第十一页,共七十页【例【例4-1】1./*TextField 类的简单示例类的简单示例 */2.import
6、 java.applet.*;3.import java.awt.*;4.public class Example4_1 extends Applet5.6.TextField text1,text2,text3;7.public void init()8.9.text1=new TextField(输入密码:输入密码:,10);10.text1.setEditable(false);11.text2=new TextField(10);12.text2.setEchoChar(*);13.text3=new TextField(我是一个文本框我是一个文本框,20);14.add(text1)
7、;/将文本框添加到将文本框添加到Applet中中15.add(text2);16.add(text3);17.text3.setText(重新设置了文本重新设置了文本);18.19.本讲稿第十二页,共七十页3、TextAear类类文本区文本区TextArea是对多行文本进行编辑是对多行文本进行编辑的组件,它拥有水平或垂直的滚动条的组件,它拥有水平或垂直的滚动条.TextArea txt1=new TextArea(行行,列列);本讲稿第十三页,共七十页4、标签、标签Label类类(1)创建标签)创建标签创建标签对象时应同时说明这个标创建标签对象时应同时说明这个标签中的字符串:签中的字符串:La
8、bel lb=new Label(“请输入姓名请输入姓名”);(2)常用方法)常用方法setText(String str)设置标签文本设置标签文本内容;内容;getText()获取标签文本内容。获取标签文本内容。本讲稿第十四页,共七十页4.2.2按钮(按钮(Button)类)类定义:定义:1.public class Button extends Component 2.3.public Button()4.public Button(String label)5.public String getLabel()6.public void setLabel(String label)7.pu
9、blic void addActionListener(ActionListener l)8.public void removeActionListener(ActionListener l)9.本讲稿第十五页,共七十页表表4.2 按钮按钮Button类常用方法类常用方法方法名方法名功能功能Button()构造方法构造方法Button(String label)构造方法构造方法getLabel()获获取取标签标签内容内容setLabel(String label)设设置置标签标签内容内容addActionListener(ActionListener l)设设置置监视监视器器本讲稿第十六页,
10、共七十页【例【例4-3】1./*构造按钮构造按钮*/2.import java.applet.*;3.import java.awt.*;4.public class Example5_3 extends Applet5.6.Button btn;7.public void init()8.btn=new Button(确定确定);9.add(btn);/把按钮加到把按钮加到Applet中中10.11.本讲稿第十七页,共七十页ActionListener接口接口 awt对这个接口的定义是:对这个接口的定义是:public interface ActionListener extends Eve
11、ntListener public abstract void actionPerformed(ActionEvent e)本讲稿第十八页,共七十页设计处理事件的类时,就要实现这个设计处理事件的类时,就要实现这个接口。其一般形式如下:接口。其一般形式如下:class ClassName implements ActionListener btn.addActionListener(this);public abstract void actionPerformed(ActionEvent e)本讲稿第十九页,共七十页 通过实现通过实现ActionListener接口,使得监视器能接口,使得监视
12、器能知道事件的发生。在知道事件的发生。在Java 中,要求产生事件的组中,要求产生事件的组件向它的监视器注册,这样,事件源与监视器就建件向它的监视器注册,这样,事件源与监视器就建立了一个对应关系。建立对应关系的语句如下:立了一个对应关系。建立对应关系的语句如下:对象名对象名.addActionListener(ClassName);其中,对象是事件源,其中,对象是事件源,ClassName是监视器。是监视器。例如:例如:btn.addActionListener(this);这条语句的意思是:按钮对象(事件源)这条语句的意思是:按钮对象(事件源)btn向它的向它的监视器(当前类)注册,也就是产
13、生事件的事件源对象向监视器(当前类)注册,也就是产生事件的事件源对象向监视器注册。监视器注册。本讲稿第二十页,共七十页【例【例4-4】设计一个密码验证程序。】设计一个密码验证程序。1./*按钮动作事件按钮动作事件*/2.import java.applet.*;3.import java.awt.*;4.import java.awt.event.*;5.public class Example4_4 extends Applet implements ActionListener6.7.Label lb=new Label(“请输入密码请输入密码:”);8.TextField txt1=ne
14、w TextField(25);9.Button btn=new Button(确定确定);10.TextField txt2=new TextField(25);本讲稿第二十一页,共七十页11.public void init()12.13.add(lb);14.add(txt1);15.txt1.setEchoChar(*);/设置掩码设置掩码16.add(btn);17.add(txt2);18.btn.addActionListener(this);19.20.public void actionPerformed(ActionEvent e)21.22.if(txt1.getText
15、().equals(abc)/比较字符串比较字符串23.txt2.setText(密码正确密码正确!);24.else25.txt2.setText(密码错误密码错误!);26.27.本讲稿第二十二页,共七十页作业作业:设计一个序列号程序:设计一个序列号程序:当输满一节字符后自动把焦点当输满一节字符后自动把焦点跳到下一个文本框。跳到下一个文本框。XXXXXXXXXXXXXXX请输入序列号请输入序列号:XXXXX本讲稿第二十三页,共七十页序列号算法序列号算法假设根据用户名计算序列号。假设根据用户名计算序列号。例如将用户输入的用户名的所有例如将用户输入的用户名的所有字母字母ASCII码乘码乘199
16、再加起来,如果用再加起来,如果用户名短于户名短于20位,补满位,补满20位,超过位,超过20位,位,只使用前只使用前20位。位。检验序列号的方法就是将根据用户输检验序列号的方法就是将根据用户输入的用户名计算一遍,然后对比计算出入的用户名计算一遍,然后对比计算出来的号码和用户输入的是否一致。来的号码和用户输入的是否一致。本讲稿第二十四页,共七十页4.3面板与布局管理面板与布局管理本讲稿第二十五页,共七十页4.3.1面板(面板(Panel)类)类 创建面板的一般步骤为:创建面板的一般步骤为:(1)创建面板对象:)创建面板对象:Panel myPanel=new Panel();(2)将面板添加到)
17、将面板添加到Applet容器中:容器中:add(myPanel);(3)把组件放置到面板上:)把组件放置到面板上:myPanel.add(组件组件);本讲稿第二十六页,共七十页【例【例4-5】面板】面板Panel简单示例简单示例 1./*面板面板Panel简单示例简单示例*/2.import java.awt.*;3.public class Example4_5 extends java.applet.Applet4.5.Panel panel1,panel2;6.Button button1,button2,button3,button4;7.public void init()8.9.p
18、anel1=new Panel();10.panel2=new Panel();11.add(panel1);add(panel2);/添加面板添加面板12.button1=new Button(Button1);13.button2=new Button(Button2);14.button3=new Button(Button3);15.button4=new Button(Button4);16.panel1.add(button1);panel1.add(button2);17.panel2.add(button3);panel2.add(button4);18.panel1.setB
19、ackground(Color.red);19.panel2.setBackground(Color.blue);20.21.本讲稿第二十七页,共七十页4.3.2布局策略布局策略Java在在java.awt包中定义了包中定义了5种布局,种布局,它们分别是:它们分别是:FlowLayout、BorderLayout、CardLayout、GridLayout、GridBagLayout。设置布局的格式为:设置布局的格式为:容器对象容器对象.setLayout(布局策略布局策略);本讲稿第二十八页,共七十页1、浮动布局、浮动布局FlowLayout 浮动布局是按照组件的顺序,用浮动布局是按照组件的
20、顺序,用add方法将组件从左至右在一行排列,方法将组件从左至右在一行排列,一行放不下时就自动换行。一行放不下时就自动换行。这是系统的默认的布局方式。这是系统的默认的布局方式。其设置的方法为:其设置的方法为:setLayout(new FlowLayout();本讲稿第二十九页,共七十页2、边界布局、边界布局BorderLayoutBorderLayout类把容器划分成类把容器划分成5个区域,个区域,分别标记为分别标记为“North”、“South”、“West”、“East”和和“Center”。其设置的方法为:其设置的方法为:setLayout(new BorderLayout();中中北北
21、西西南南东东本讲稿第三十页,共七十页【例【例4-6边界布局示例边界布局示例】1./*边界布局示例边界布局示例*/2.import java.awt.*;3.public class Example4_6 extends java.applet.Applet4.5.public void init()6.setLayout(new BorderLayout();7./将其他构件加入将其他构件加入8.add(East,new Button(东东);9.add(South,new Button(南南);10.add(West,new Button(西西);11.add(North,new Butto
22、n(北北);12.add(Center,new Button(中中);13.14.本讲稿第三十一页,共七十页3、网格布局、网格布局GridLayoutGridLayout类以矩形网格形式对容器中的类以矩形网格形式对容器中的组件进行布局。容器被分成大小相等的组件进行布局。容器被分成大小相等的单元格,单元格的大小由最大的构件所单元格,单元格的大小由最大的构件所决定,用决定,用add方法将组件一行一行地从方法将组件一行一行地从左至右放置到布局的每个单元格中。左至右放置到布局的每个单元格中。其设置的方法为:其设置的方法为:setLayout(new GridLayout(int row,int col
23、s);row是网格的行数,是网格的行数,cols是网格的列数。是网格的列数。本讲稿第三十二页,共七十页4、卡片布局、卡片布局CardLayout 这种布局包含几个卡片,在某一时这种布局包含几个卡片,在某一时刻只有一个卡片是可见的,而且第一刻只有一个卡片是可见的,而且第一个卡片显示的内容可用自己的布局来个卡片显示的内容可用自己的布局来管理。管理。卡片布局设置的方法为卡片布局设置的方法为:setLayout(new CardLayout();本讲稿第三十三页,共七十页【例【例4-8】应用卡片布局,显示变换】应用卡片布局,显示变换颜色的图案。颜色的图案。程序的界面安排如图程序的界面安排如图:本讲稿第
24、三十四页,共七十页4.4 事件处理事件处理1、AWT事件处理模型事件处理模型2、事件处理程序的编写、事件处理程序的编写本讲稿第三十五页,共七十页4.4.1 事件处理机制事件处理机制1、事件处理模型在事件处理的过程中,主要涉及三类对象:Event-事件,用户对界面操作在Java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。EventSource-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。Eventhandler-事件处理者,接收事件对象并对其进行处理的对象。本讲稿第三十六页,共七十页授权处理机制本讲稿第三十七页,共七十页2、事件类(例Simple
25、Event.java)在Java中,每个事件都是某种事件类的对象,可以归为两大类:低级事件和高级事件。低级事件:KeyEvent(键盘事件:键按下、释放);MouseEvent(鼠标事件:鼠标单击,移动)。高级事件:ActionEvent(动作事件:按钮按下,TextField中按Enter键等)方法:ObjectgetSource():发生事件的对象。本讲稿第三十八页,共七十页3、事件监听器类(P103)每类事件都有对应的事件监听接口,如:MouseEvent-MouseListener,KeyEvent-KeyListener等。可以定义一个实现了某个事件监听接口的类,并重写需要的方法,专
26、门负责某种事件处理。例如,定义一个事件监听类实现对键盘按下事件的监听:本讲稿第三十九页,共七十页publicclassKeyListenerimplementsKeyListenerpublicvoidkeyPressed(KeyEventev)/事件处理代码;publicvoidkeyReleased(KeyEventev)publicvoidkeyTyped(KeyEventev)例:KeyTest.java本讲稿第四十页,共七十页 1、事件处理程序的编写步骤:首先:定义一个实现了相应事件监听接口的类,如:classKeyHandlerimplementsKeyListener其次:为组件
27、注册监听器对象,如:btn.addKeyListener(newKeyHandler();事件处理程序的编写事件处理程序的编写本讲稿第四十一页,共七十页2、使用类本身实现监听接口例如使用类本身监听KeyEvent事件:publicclassKeyTestimplementsKeyListenerpublicKeyTest()Buttonbtn=newButton(“Rec”)/initbtn.addKeyListener(this);/addlistener/事件处理代码例:KeyTest.java本讲稿第四十二页,共七十页3、定义专门的外部类实现监听接口publicclassKeyTestp
28、ublicKeyTest()Buttonbtn=newButton(“Rec”);/initbtn.addKeyListener(newKeyHandler();/addlistenerclassKeyHandlerimplementsKeyListener/事件处理代码本讲稿第四十三页,共七十页4、用内部类实现监听接口publicclassKeyTestpublicKeyTest()Buttonbtn=newButton(“Rec”);/initbtn.addKeyListener(newKeyHandler();/addlistenerclassKeyHandlerimplementsKe
29、yListener/事件处理代码本讲稿第四十四页,共七十页5、采用事件适配器Java为一些Listener接口提供了适配器类。如KeyListenerKeyAdapter等。为用户提供了一种简单的实现监听器的手段,可以缩短程序代码。可以通过继承事件所对应的Adapter类,重写需要的方法,而无关的方法不用实现。例如:KeyTest.java本讲稿第四十五页,共七十页6、一个组件注册多个监听者由于同一个事件源上可能发生多种事件,因此Java采取了授权处理机制。事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。监听器时刻监听着事件源上所有发生的事件类型,一旦该事件类型与自己所
30、负责处理的事件类型一致,就马上进行处理。例如:MultiListener.java本讲稿第四十六页,共七十页4.4.5 鼠标键盘事件鼠标键盘事件 1、鼠标事件、鼠标事件在图形界面中,鼠标的使用是最频在图形界面中,鼠标的使用是最频繁的。在繁的。在Java中,当用户使用鼠标进中,当用户使用鼠标进行操作时,就会产生鼠标事件行操作时,就会产生鼠标事件MouseWvent。对。对MouseEvent事件事件的响应是实现的响应是实现MouseListener接口或接口或MouseMotinListener接口,或者是继接口,或者是继承承MouseApdapter类,来实现鼠标适类,来实现鼠标适配器配器Mo
31、useApdapter提供的方法。提供的方法。本讲稿第四十七页,共七十页与鼠标的事件有关可以分为两类:与鼠标的事件有关可以分为两类:(1)主要针对鼠标的坐标位置进行检测,主要针对鼠标的坐标位置进行检测,使用使用MouseListener接口;接口;(2)主要针对鼠标的拖曳状态进行检测,主要针对鼠标的拖曳状态进行检测,使用使用MouseMotinListener接口。接口。本讲稿第四十八页,共七十页2、键盘事件、键盘事件在在Java中,当用户使用键盘进行操中,当用户使用键盘进行操作时,就会产生作时,就会产生KeyEvent事件。监听事件。监听器要完成对事件的响应,就要实现器要完成对事件的响应,就
32、要实现KeyListener接口,或者是继承接口,或者是继承KeyAdapter类,实现对类中方法的定类,实现对类中方法的定义。义。本讲稿第四十九页,共七十页在在KeyListener接口中有如下接口中有如下3个事件:个事件:(1)KEY_PRESSED:键盘按键被按下所产生的事件。键盘按键被按下所产生的事件。(2)KEY_RELEASED:键盘按键被释放所产生的事件。键盘按键被释放所产生的事件。(3)KEY_TYPED:键盘按键被点击所产生的事件。键盘按键被点击所产生的事件。在实现接口时,对应的上面在实现接口时,对应的上面3个事件的处理方法是:个事件的处理方法是:keyPressed(Eve
33、nt e);keyReleased(KeyEvent e);keyTyped(keyEvent e);本讲稿第五十页,共七十页4.5常用图形用户界面组件常用图形用户界面组件 4.5.1窗体(窗体(Frame)类)类 Frame是带有标题、边框的顶层窗是带有标题、边框的顶层窗体。体。Frame包含有标题、菜单、类似包含有标题、菜单、类似于文本区的区域和按钮,其外观依赖于文本区的区域和按钮,其外观依赖于所使用的操作系统。于所使用的操作系统。本讲稿第五十一页,共七十页(1)窗体)窗体Frame类的定义类的定义 awt对对 Frame类的定义为:类的定义为:1.public class Frame e
34、xtends Window implements MenuContainer2.3.public Frame()4.public Frame(String title)5.public String getTitle()6.public void setTitle(String title)7.public MenuBar getMenuBar()8.public void setMenuBar(MenuBar mb)9.public void dispose()10.其中:第其中:第3、4、行是窗体的构造方法,第、行是窗体的构造方法,第5行是获取标题内容,第行是获取标题内容,第6行是设置标行
35、是设置标题内容,第题内容,第7行的方法是获取在该窗体的菜单,第行的方法是获取在该窗体的菜单,第8行是设置菜单,第行是设置菜单,第9行是行是关闭窗体的方法。关闭窗体的方法。Frame 在缺省的情况是不可见的,要调用在缺省的情况是不可见的,要调用setVisible(true)方法使其可见。方法使其可见。Frame 默默认的布局方式为认的布局方式为BorderLayout布局。布局。本讲稿第五十二页,共七十页(2)创建窗体)创建窗体创建窗体有二种方法,一种方法是创建创建窗体有二种方法,一种方法是创建Frame类的子类,并重写其构造方法。类的子类,并重写其构造方法。另一种方法是创建另一种方法是创建F
36、rame类的一个对类的一个对象:象:Frame win=new Frame(简单窗体简单窗体);本讲稿第五十三页,共七十页(3)Frame 类的方法类的方法 方法名方法名功能功能Frame();Frame();创创建无建无标题标题的窗体的窗体Frame(String s);Frame(String s);创创建建标题为标题为s s的窗体的窗体setMenuBar(MenuBar mb);setMenuBar(MenuBar mb);设设置菜置菜单单dispose();dispose();关关闭闭窗体,窗体,释释放占用放占用资资源源setVisible(bolean b);setVisible(
37、bolean b);设设置窗体的可置窗体的可见见性性setSize(int width,int setSize(int width,int height);height);设设置窗体的大小置窗体的大小 Validate();Validate();使窗体中的使窗体中的组组件能件能显显示出来示出来setTitle(String title);setTitle(String title);设设置置标题标题内容内容getTitle();getTitle();获获取取标题标题内容内容本讲稿第五十四页,共七十页一、选择组件一、选择组件复选框(Checkbox)Checkbox(Stringlabel):使
38、用指定标签创建一个复选框。Checkbox(Stringlabel,booleanstate):使用指定标签创建一个复选框,并将它设置为指定状态。Checkbox(Stringlabel,CheckboxGroupgroup,booleanstate):使用指定标签构造一个Checkbox,并将它设置为指定状态,使它处于指定复选框组中。4.5.2 选择组件选择组件本讲稿第五十五页,共七十页单选按钮组(单选按钮组(CheckboxGroup)提供了将多个复选框作为互斥的一个集合的方法,在任何时刻,这个集合中只有一个复选框的值为true。CheckboxGroup():创建CheckboxGrou
39、p的一个新实例。例如,以下的三个Checkbox都被指定加入cbg单选按钮组中。本讲稿第五十六页,共七十页CheckboxGroupcbg=newCheckboxGroup();Checkboxone=newCheckbox(“one”,true,cbg);Checkboxtwo=newCheckbox(“two”,false,cbg);Checkboxthree=newCheckbox(“three”,false,cbg);本讲稿第五十七页,共七十页下拉列表(下拉列表(Choice)下拉列表每次只能选取其中的一项例如:Choicec=newChoice();c.add(“First”);c.
40、add(“Second”);c.add(“Third”);本讲稿第五十八页,共七十页滚动列表(滚动列表(List)有多个文本选项,可以同时选择多项。List(introws,booleanmultipleMode)创建一个初始化为显示指定行数的新滚动列表,同时指出是否可以同时选择多项。例如:Listlst=newList(3,false);lst.add(“One”);lst.add(“Two”);lst.add(“Three”);本讲稿第五十九页,共七十页选择事件(选择事件(ItemEvent)所有选择组件都有一个共同的事件类,引发选择事件的动作为:改变复选框对象的状态。改变下拉列表对象的状
41、态。改变滚动列表的状态。使用ItemListener监听,该接口中只有一个方法:itemStateChanged(ItemEvente)本讲稿第六十页,共七十页ItemEvent的主要方法的主要方法getItem():返回受事件影响的项。getStateChange():返回状态更改的类型(已选定或已取消选定)。ItemEvent.SELECTED:代表选项被选中Item.DESELECTED:代表选项未选中例:ChoiceDemo.java本讲稿第六十一页,共七十页二、菜单组件二、菜单组件不能将菜单组件直接添加到一般的容器中不能使用布局管理器对它们进行布局AWT提供的菜单机制是这样的:一个容
42、器包含一个菜单条,一个菜单条中包含多个菜单,一个菜单中包含多个菜单或菜单项和菜单相关的组件有四个:MenuBar,Menu,MenuItem,CheckboxMenuItem.4.5.3 菜单和对话框菜单和对话框本讲稿第六十二页,共七十页菜单条(菜单条(MenuBar)一个菜单条组件是一个水平容器,并作为所有菜单树的根。一个窗体中只可以显示一个菜单条。菜单条不能注册任何监听者。例如:Framefr=newFrame();MenuBarmb=newMenuBar();f.setMenuBar(mb)本讲稿第六十三页,共七十页菜单(菜单(Menu)菜单组件提供了一个基本的下拉式菜单,它可以加入到一
43、个菜单条或者另一个菜单中。例如:MenuBarmb=newMenuBar();Menumu1=newMenu(“File”);Menumu2=newMenu(“Edit”);mb.add(mu1);mb.add(mu2);f.setMenuBar(mb);本讲稿第六十四页,共七十页菜单项(菜单项(MenuItem)菜单项组件通常被加入到菜单中,以构成一个完整的菜单。通常,将一个ActionListener注册到一个菜单项对象中,接收和处理选中菜单项的事件。例如:Menumu=newMenu(“File”);MenuItemmi1=newMenuItem(“New”);MenuItemmi2=n
44、ewMenuItem(“Load”);mu.add(mi1);mu.add(mi2);本讲稿第六十五页,共七十页复选菜单项(复选菜单项(CheckboxMenuItem)是一个可复选的菜单项,在菜单上有选项“开/关”。应当使用ItemListener接口来监听该菜单项,当复选菜单项的状态发生改变时,就会调用itemStateChanged()方法。例如:MenuDemo.java本讲稿第六十六页,共七十页三、对话框组件(三、对话框组件(Dialog)是一个有边框、有标题的容器,必须与一个窗体相关联。一般用于从用户处获得某种形式的输入。可以是无模式的(默认情况下)或有模式的。一个有模式的对话框将阻断输入到应用程序中其他所有顶层窗口的内容。本讲稿第六十七页,共七十页对话框的构造方法对话框的构造方法Dialog(Frameowner):构造无模式的对话框,带有空标题和指定的所有者框架。Dialog(Frameowner,booleanmodal):构造对话框,带有空标题、指定的所有者框架和模式。Dialog(Frameowner,Stringtitle,booleanmodal):构造一个初始时不可见的对话框,带有指定的所有者框架、标题和模式。本讲稿第六十八页,共七十页对话框的举例对话框的举例DiagDemo.java本讲稿第六十九页,共七十页本章结束本章结束!本讲稿第七十页,共七十页