第6章Java图形用户界面_第1页
第6章Java图形用户界面_第2页
第6章Java图形用户界面_第3页
第6章Java图形用户界面_第4页
第6章Java图形用户界面_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第6章Java图形用户界面,6.4标签、按钮、文本区与动作事件6.5Java应用程序的图形界面,6.4标签、按钮、文本区与动作事件,回顾:,GUI标准组件,容器组件,基本控制组件,6.4.1标签,继承自组件类,用来显示一行文本信息。标签类没有事件响应。,一、创建标签类对象,1.publicLabel()构造一个没有任何显示文本的标签。,2.publicLabel(Stringstr)构造一个指定显示文本的标签。,3.publicLabel(Stringstr,intalignment),如:LabelL1=newLabel(“请输入一个整数”,Label.RIGHT);,二、将一个标签对象放置到容器中,使用add()方法。,如:add(L1);,三、标签类的其它常用方法,publicStringgetText()得到标签文本,publicvoidsetText(Stringstr)为标签设置一个只读文本信息,publicvoidsetAlignment(intAlignment)设置标签的对齐方式。,publicvoidsetBackground(Colorc)设置标签的背景颜色。,publicvoidsetForeground(Colorc)设置标签的文字颜色。,例7在小程序中创建和添加标签,并设置“标签2”的背景色和文本颜色。,importjava.awt.*;importjava.applet.*;publicclassUseLabelextendsAppletpublicvoidinit()setBackground(Color.lightGray);LabelL1,L2;L1=newLabel();L1.setText(标签1);L2=newLabel(标签2,Label.RIGHT);L2.setBackground(Color.pink);L2.setForeground(Color.blue);add(L1);add(L2);,/page7.htmlJava小程序,运行结果如下:,6.4.2按钮,继承自组件类,是能通过鼠标单击触发特定动作的组件。,一、创建按钮对象,1.publicButton()创建一个没有名称的按钮。,2.publicButton(Stringlabel)创建一个有名称的按钮。,例Buttonbtn=newButton(“画圆”);,二、将按钮对象添加到容器中,使用add()方法。,例add(btn);,三、处理按钮的动作事件,Java中的事件处理由专门的类完成,所有事件处理的类和接口都在java.awt.event包中。,当用户单击按钮后,将引发动作事件(ActionEvent),ActionEvent类自动创建一个动作事件对象e,处理按钮动作事件是通过在程序中实现ActionListener接口中的抽象方法publicvoidactionPerformed(ActionEvente);来完成的。,由于ActionEven类和ActionListener接口都在java.awt.event包中,因此,定义一个按钮需要经过下述过程:,1.在程序最前面引入事件响应包中的类,importjava.awt.event.*;,2.程序要实现ActionListener接口,publicclass类名extends父类implementsActionListener.;publicvoidactionPerformed(ActionEvente)/事件处理代码repaint();/需要更新页面时需要此语句,3.为按钮对象接上一个事件监听器,publicvoidaddActionListener(ActionListenerlistener);,这里this表示动作事件响应的程序自身(事件监听者),只有把按钮单击事件注册给事件监听者后,程序才能响应该动作事件。,4.按钮事件的处理,当用户单击按钮后,将执行actionPerform()方法。单击按钮将引发动作事件,java系统将自动创建ActionEvent类的一个对象e,通过该类的方法getActionCommand()或getSource()可判断事件源,即单击了哪个按钮。,if(e.getSource()=btn)/如果单击了按钮btn,执行此处的代码.;或if(e.getActionCommand().equals(画圆)/如果单击按钮上的文本等于画圆(即单击了按钮btn),执行此处的代码.;,如:,getActionCommand()返回动作命令名称,默认的动作命令名称为所单击按钮的标签文本。,例8在小程序中定义两个按钮“画图”和“清除”。单击“画图”,在小程序窗口中画一个蓝色的填充圆;单击“清除”,则清除所画的填充圆。,/UseButton.javaimportjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassUseButtonextendsAppletimplementsActionListenerButtonbtn1,btn2;intk=0;publicvoidinit()btn1=newButton(画圆);btn1.addActionListener(this);add(btn1);btn2=newButton(清除);btn2.addActionListener(this);add(btn2);,引入事件响应包中的类,实现actionListener接口,publicvoidactionPerformed(ActionEvente)if(e.getActionCommand().equals(画圆)k=1;if(e.getSource()=btn2)k=2;repaint();publicvoidpaint(Graphicsg)if(k=1)g.setColor(Color.blue);g.fillOval(60,30,80,80);if(k=2),按钮事件的处理,刷新。当执行repaint()方法后,系统自动调用paint()方法。,运行结果见演示。,6.4.3文本框,Component类,TextComponent类,TextField类,TextArea类,这里,TextField类的具体实例是一个单行的文本框。TextArea类的具体实例是一个多行的文本域,也称为文本区。,文本框可以接收从键盘输入的信息,并能响应ActionEvent事件,即响应文本框中的回车事件(按Enter键),一、创建文本框对象,publicTextField()创建默认长度的文本框publicTextField(intcolumns)-创建能容纳columes个字符的空文本框publicTextField(Strings)创建含有字符串s的TextField对象,二、将文本框添加到容器中,使用add()方法。,三、处理文本框回车事件,与按钮事件处理类似,当用户在文本框输入数据,回车后,将引发一个ActionEvent事件,执行actionPerformed(ActionEvente)方法,因此应将回车后要执行的程序代码放到该方法的方法体中。,四、TextField类的一些常用方法,publicStringgetText()得到文本域中的字符串PublicStringgetSelectText()-得到文本域中被选择的字符子串PublicvoidsetText(Strings)设置文本域中的字符串PublicvoidsetEchoChar(charc)-设置文本域的回显字符。PublicvoidsetEditable(booleanb)-设置文本域的可编辑状态,当b为false时,文本框不允许修改,例9编写文本框回车事件的响应程序。在下面的小程序中,创建一个标签和一个文本框,在文本框中分别输入图片名称:1.jpg,2.jpg,5.jpg,回车后可显示该图片,图片放到小程序所在的目录。,/UseTextField.javaimportjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassUseTextFieldextendsAppletimplementsActionListenerLabelL1;TextFieldtf;Stringstr=;Imagepic=null;publicvoidinit()L1=newLabel(请输入图片名称,然后回车);tf=newTextField(8);tf.addActionListener(this);add(L1);add(tf);,publicvoidpaint(Graphicsg)pic=getImage(getCodeBase(),str);g.drawImage(pic,20,40,200,200,this);publicvoidactionPerformed(ActionEvente)if(e.getSource()=tf)str=tf.getText();repaint();,/UseTextField.htmlJava小程序,运行结果见演示。,6.4.4文本区,用于创建多行文本。方法与文本框类似,具体见API文档。,6.5Java应用程序的图形界面,6.5.1容器和基本控制组件,基本控制组件:,容器组件:,标签、按钮和文本组件等。,其中窗体类包括框架类(Frame)、对话框类(Dialog)和文件对话框类(FileDialog),面板类(Panel),窗体类(window),一个组件需要添加到容器中才能看到,一个容器本身也可以添加到另一个容器中,实现容器的嵌套。,6.5.2应用程序图形界面的实现,应用程序(Application)要具有图形界面的窗口,需要继承自框架类,或先编写框架类的子类,并创建该类对象。,1、创建窗口,用java.awt包中的框架类或它的子类创建的一个对象就是一个窗口,它是一个容器,窗口中可以添加如标签、按钮、菜单等组件。,publicFrame()创建一个没有窗口名字的窗口PublicFrame(Stringtitle)创建一个名字为title的窗口,窗口默认是不可见的,必须通过setVisible(booleanb)设置窗口可见。(逻辑值b为true时)。,2.设置窗口的一些方法,publicvoidsetSize(intwidth,intheight)-设置窗口宽width、高height,单位是像素。publicvoidsetVisible(booleanb)设置窗口是否可见,默认为不可见。b为true时,窗口可见。publicvoidsetResizable(booleanb)设置窗口是否可调整,默认大小可调整。b为false时,窗口大小不可调整。publicvoidsetTitle(Stringtitle)设置窗口的标题名为titlepublicvoidsetBounds(intx,inty,intwidth,intheight)-设置窗口在屏幕上的显示位置及宽和高。publicvoidpack()-根据窗口中的布局和添加组件的大小以紧凑形式显示窗口。,3.处理窗口关闭事件,当一个窗口打开、关闭、最小化时都会引发窗口事件(WindowsEvent),窗口事件类在java.awt.event包中。实现窗口事件监听的接口是WindowListener接口。该接口包含7个方法,分别响应不同的接口事件。,publicvoidwindowActivated(WindowEvente)publicvoidwindowClosed(WindowEvente)publicvoidwindowClosing(WindowEvente)publicvoidwindowDeactivated(WindowEvente)publicvoidwindowDeiconified(WindowEvente)publicvoidwindowIconified(WindowEvente)publicvoidwindowOpened(WindowEvente),实际编程时,只需要编写windowClosing(WindowEvente)方法的代码处理窗口关闭事件,即当单击窗口右上角的“”时,关闭窗口,其他方法只需加上空语句体即可。,窗口关闭事件处理的代码如下:,publicvoidwindowClosing(WindowEvente)dispose();System.exit(0);,释放该窗口和其中所有组件所占的资源,终止当前运行的Java虚拟机,退出Java运行系统。,Java提供了WindowAdapter类来处理窗口事件,该类已经实现了上述的7个方法,即给7个方法加上了空语句体。若处理窗口关闭事件,只需要重写windowClosing()方法的方法体即可。此时通过内部类或匿名类来实现,可以减少程序代码。,例10对应用程序的图形界面和窗口关闭事件进行演示说明。,importjava.awt.*;importjava.awt.event.*;publicclassUseFramepublicstaticvoidmain(Stringargs)MyFramew=newMyFrame(ja

温馨提示

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

评论

0/150

提交评论