您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > 清华大学张思民Java课件第5章
Java语言程序设计第4章图形用户界面设计主讲:张思民仰恩大学Java课程组第4章主要内容1、Applet及awt类包2、文本组件及按钮类3、面板与布局管理4、事件处理5、常用图形用户界面组件4.1awt类包及Applet4.1.1AppletApplet是一个功能非常强大的能够嵌入到HTML页面中,并在浏览器中自动执行的Java程序。当使用浏览器对一个包含Applet的Web页面进行浏览时,浏览器将从Web服务器下载Applet程序到本地执行。1、Applet的定义publicclassAppletextendsPanel{publicApplet();publicvoidstart();publicvoidstop();publicURLgetDocumentBase();}2、JavaApplet程序的一般形式importjava.applet.*;public类名extendsApplet{publicvoidinit(){…;}publicvoidstart(){…;}publicvoidstop(){…;}publicvoiddestroy(){…;}4个生命周期3、JavaApplet程序的运行HTMLAPPLETCODE=A.classWIDTH=200HEIGHT=300/APPLET/HTML4.1.2awt类包(1)基本的窗口类:Frame、Dialog(2)基本的GUI组件类:Button、Label、TextField、TextArea、Checkbox(3)基本的事件接口:ActionListener、WindowListener、MouseListener、KeyListener(4)界面布局控制类:FlowLayout、BorderLayout、GridLayout、CardLayout(5)基本的绘图支持类:Graphics、Canvas4.2文本组件及按钮类4.2.1文本组件类1、TextComponent类方法名功能setText(Stringt)设置文本内容getText()获取文本内容isEdit()检测文本的可编辑性setEdit(Booleanb)检测文本的可编辑性getSelectedText()获取选取文本内容select(intselStart,intselEnd)选取文本内容2、TextField类文本框TextField是对单行文本进行编辑的组件。它用来接受用户的输入码或显示可编辑的文本。(2)创建文本框TextFieldtext=newTextField(Stringstr);【例4-1】1./*TextField类的简单示例*/2.importjava.applet.*;3.importjava.awt.*;4.publicclassExample4_1extendsApplet5.{6.TextFieldtext1,text2,text3;7.publicvoidinit()8.{9.text1=newTextField(输入密码:,10);10.text1.setEditable(false);11.text2=newTextField(10);12.text2.setEchoChar('*');13.text3=newTextField(我是一个文本框,20);14.add(text1);//将文本框添加到Applet中15.add(text2);16.add(text3);17.text3.setText(重新设置了文本);18.}19.}3、TextAear类文本区TextArea是对多行文本进行编辑的组件,它拥有水平或垂直的滚动条.TextAreatxt1=newTextArea(行,列);4、标签Label类(1)创建标签创建标签对象时应同时说明这个标签中的字符串:Labellb=newLabel(“请输入姓名”);(2)常用方法setText(Stringstr)设置标签文本内容;getText()获取标签文本内容。4.2.2按钮(Button)类定义:1.publicclassButtonextendsComponent2.{3.publicButton()4.publicButton(Stringlabel)5.publicStringgetLabel()6.publicvoidsetLabel(Stringlabel)7.publicvoidaddActionListener(ActionListenerl)8.publicvoidremoveActionListener(ActionListenerl)9.}表4.2按钮Button类常用方法方法名功能Button()构造方法Button(Stringlabel)构造方法getLabel()获取标签内容setLabel(Stringlabel)设置标签内容addActionListener(ActionListenerl)设置监视器【例4-3】1./*构造按钮*/2.importjava.applet.*;3.importjava.awt.*;4.publicclassExample5_3extendsApplet5.{6.Buttonbtn;7.publicvoidinit(){8.btn=newButton(确定);9.add(btn);//把按钮加到Applet中10.}11.}ActionListener接口awt对这个接口的定义是:publicinterfaceActionListenerextendsEventListener{publicabstractvoidactionPerformed(ActionEvente)}设计处理事件的类时,就要实现这个接口。其一般形式如下:classClassNameimplementsActionListener{…btn.addActionListener(this);…publicabstractvoidactionPerformed(ActionEvente){…}}通过实现ActionListener接口,使得监视器能知道事件的发生。在Java中,要求产生事件的组件向它的监视器注册,这样,事件源与监视器就建立了一个对应关系。建立对应关系的语句如下:对象名.addActionListener(ClassName);其中,对象是事件源,ClassName是监视器。例如:btn.addActionListener(this);这条语句的意思是:按钮对象(事件源)btn向它的监视器(当前类)注册,也就是产生事件的事件源对象向监视器注册。【例4-4】设计一个密码验证程序。1./*按钮动作事件*/2.importjava.applet.*;3.importjava.awt.*;4.importjava.awt.event.*;5.publicclassExample4_4extendsAppletimplementsActionListener6.{7.Labellb=newLabel(“请输入密码:”);8.TextFieldtxt1=newTextField(25);9.Buttonbtn=newButton(确定);10.TextFieldtxt2=newTextField(25);11.publicvoidinit()12.{13.add(lb);14.add(txt1);15.txt1.setEchoChar('*');//设置掩码16.add(btn);17.add(txt2);18.btn.addActionListener(this);19.}20.publicvoidactionPerformed(ActionEvente)21.{22.if(txt1.getText().equals(abc))//比较字符串23.txt2.setText(密码正确!!);24.else25.txt2.setText(密码错误!!);26.}27.}作业:设计一个序列号程序:当输满一节字符后自动把焦点跳到下一个文本框。XXXXXXXXXXXXXXX请输入序列号:XXXXX序列号算法假设根据用户名计算序列号。例如将用户输入的用户名的所有字母ASCII码乘199再加起来,如果用户名短于20位,补满20位,超过20位,只使用前20位。检验序列号的方法就是将根据用户输入的用户名计算一遍,然后对比计算出来的号码和用户输入的是否一致。4.3面板与布局管理4.3.1面板(Panel)类创建面板的一般步骤为:(1)创建面板对象:PanelmyPanel=newPanel();(2)将面板添加到Applet容器中:add(myPanel);(3)把组件放置到面板上:myPanel.add(组件);【例4-5】面板Panel简单示例1./*面板Panel简单示例*/2.importjava.awt.*;3.publicclassExample4_5extendsjava.applet.Applet4.{5.Panelpanel1,panel2;6.Buttonbutton1,button2,button3,button4;7.publicvoidinit()8.{9.panel1=newPanel();10.panel2=newPanel();11.add(panel1);add(panel2);//添加面板12.button1=newButton(Button1);13.button2=newButton(Button2);14.button3=newButton(Button3);15.button4=newButton(Button4);16.panel1.add(button1);panel1.add(button2);17.panel2.add(button3);panel2.add(button4);18.panel1.setBackground(Color.red);19.panel2.setBackground(Color.blue);20.}21.}4.3.2布局策略Java在java.awt包中定义了5种布局,它们分别是:FlowLayout、BorderLayout、CardLayout、GridLayout、GridBagLayout。设置布局的格式为:容器对象.setLayout(布局策略);1、浮动布局FlowLayout浮动布局是按照组件的顺序,用add方法将组件从左至右在一行排列,一行放不下时就自动换行。这是系统的默认的布局方式。其设置的方法为:setLayout(newFlowLayout());2、边界布局BorderLayoutBorderLayout类把容器划分成5个区域,分别标记为“North”、“South”、“West”、“East”和“Center”。其设置的方法为:setLayout(newBorderLayout());中北西南东【例4-6边界布局示例】1./*边界布局示例*/2.importjava.awt.*;3.publicclassExample4_6extendsjava.applet.Applet4.{5.publicvoidinit(){6.setLayout(newBorderLayout());7.//将其他构件加入8.add(East,newButton(东));9.add(South,newButton(南));10.add(West,newButton(西));11.add(North,newButton(北));12.add(Center,newButton(中));13.}14.}3、网格布局GridLayoutGridLayout类以矩形网格形式对容器中的组件进行布局。容器被分成大小相等的单元格,单元格的大小由最大的构件所决定,用add方法将组件一行一行地从左至右放置到布局的每个单元格中。其设置的方法为:setLayout(newGridLayout(i
本文标题:清华大学张思民Java课件第5章
链接地址:https://www.777doc.com/doc-3169803 .html