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

下载本文档

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

文档简介

第6章Java图形用户界面6.1通过图形界面输入数据初始化Human对象知识要点

图形用户界面

事件处理机制布局管理[实例]在图形界面的窗口中,读入姓名,并初始化一个Human对象。1.详细设计classInstanceOfHumanextendsFrameimplementsActionListener{

窗口中各个对象的定义;publicInstanceOfHuman(){

图形界面的布局;

按钮的监听;

窗口调整;}

处理ActionEvent事件的方法actionPerformed();}2.编码实现1)引入java.awt和java.awt.event包语句:importjava.awt.*;importjava.awt.event.*;分析:包java.awt中包含了处理图形界面的类,图形界面都在一个窗口(Frame是一种窗口)内、本实例窗口内有文本框TextField、显示标签Label、按钮Button等。在图形方式工作时,往往希望点击按钮产生一个事件,自动转到事件处理程序。事件处理机制都包含在包java.awt.event中,而且要求类实现接口ActionListener。2)图形界面的布局语句:setLayout(newFlowLayout());add(namelabel);add(nametextfield);add(okbutton);add(out);分析:FlowLayout()是一种布局方式,决定对象在窗口如何摆布。方法add()把一个个对象放在窗口中。3)按钮的监听语句:okbutton.addActionListener(this);分析:窗口中的对象都有可能引发事件,本实例希望一旦按下按钮,产生事件初始化一个对象,所以只对按钮进行监听。4)窗口调整语句:setSize(400,100);show();分析:本实例把窗口调整大小为400×100,并处于显示状态。5)处理ActionEvent事件的方法actionPerformed()语句:publicvoidactionPerformed(ActionEventa){Humanp=newHuman(nametextfield.getText());out.setText("Iam"+);}分析:按钮已被监听,一旦按下按钮会产生一个ActionEvent事件,自动转到方法actionPerformed()去执行。本实例实现actionPerfomed()方法,实例化一个Human对象,并在一个Label上显示这个人的名字。3.源代码

略。4.测试与运行测试程序如下:publicclassInstanceOfHumanTest{publicstaticvoidmain(Stringargs[]){newInstanceOfHuman();}}5.技术分析1)图形用户界面Java的包java.awt中有AWT(AbstractWindowToolkit)负责生成各种标准图形界面和处理界面的各种事件。2)事件处理机制图形用户界面通过事件机制实现用户和程序的交互。3)布局管理将加入到容器(通常为窗口等)的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。布局由布局管理器(LayoutManager)来管理。6.问题与思考1)本节实例和例子中的类InstanceOfHuman都从Frame继承过来,能从Panel继承吗?为什么?2)在图形界面的窗口中,读入姓名、性别、出生年月,并利用以下Human的构造方法Human(Stringname,Stringgender,Stringbirth)初始化一个Human对象。为防止用户输入错误,用单选按钮输入性别,再对gender分别赋予"m"或"f"。6.2JavaApplets6.2.1在网页中显示一句话的程序知识要点HTML的基本结构<APPLET>标签Applet类[实例]编写JavaApplet程序,在浏览器中输出一句话Helloworld!。1.详细设计paint()是从继承Applet过来的方法,在applet初始化时、窗口移动时paint()方法会被反复的调用。Applet程序是界面是图形环境,不能再用System.out.println()显示文字。在paint()中,使用类Graphics中的drawString()函数就能实现显示文字。classHelloWorldextendsApplet{

publicvoidpaint(){

drawString()方法显示"HelloWorld!";

}}2.输出文字编码实现语句:g.drawString("HelloWorld!",5,25);分析:drawString()是类Graphics的方法,类的方法一般由类对象调用,g是Graphics的一个对象,g.drawString("HelloWorld!",5,25);实现在坐标5,25处显示HelloWorld!。3.源代码

略。4.测试与运行为运行HelloWorld.class,需要创建包含如下HTML语句的名为HelloWorld.html的文件。<HTML><TITLE>HelloWorld!Applet</TITLE><APPLETCODE="HelloWorld.class"WIDTH=200HEIGHT=100></APPLET></HTML>5.技术分析1)HTML的基本结构超文本文档分文档头和文档体两部分,在文档头里,对这个文档进行了一些必要的定义,文档体中才是要显示的各种文档信息。<HTML>

<HEAD>头部信息

</HEAD>

<BODY>文档主体,正文部分

</BODY></HTML>2)<APPLET>标签一个在HTML页面中包含有Applet的HTML文档,须用<APPLET></APPLET>标签指明Applet容器应该装入和执行哪一个Applet。3)Applet类Applet类是所有Applet应用的基类,所有的Java小应用程序都必须继承该类。Applet类用四种基本方法init()、start()、stop()、destroy()来控制其运行状态。6.问题与思考1)编写一个Applet程序,输出自己的姓名。写出该程序的源代码和包含<APPLET>标签的网页。2)编写类Yanghui,它是一个Applet程序,绘制可变大小的杨辉三角形,如下图所示。1111211331

行数由Applet参数决定。6.2.2Applets应用知识要点

与用户的交互

处理图像

处理声音[实例]编写JavaApplet程序,处理按键和松键。1.详细设计publicclassKeyboardextendsApplet{

定义初始字符串变量;

在paint()方法中输出字符串;

定义键盘按下的处理方法;

定义键盘被松开的处理方法;}2.输出文字编码实现1)在paint()方法中输出字符串语句:publicvoidpaint(Graphicsg){g.drawString(text,20,20);}分析:paint()方法是Applet的画图方法,Applet一一旦启动或调用repaint()都会运行paint()方法。2)定义键盘按下的处理方法语句:publicbooleankeyDown(Eventevt,intx){//键盘被按下的处理函数text="KeyDown";repaint();returntrue;}分析:键盘按下事件会触发运行该方法,方法中,对字符串变量text赋值后,调用repaint()方法重新画图。3)定义键盘被松开的处理方法语句:publicbooleankeyUp(Eventevt,intx){//键盘被松开的处理函数text="";repaint();returntrue;}分析:键盘放松事件会触发运行该方法,方法中,对字符串变量text赋空值后,调用repaint()方法重新画图。3.源代码

略。4.测试与运行启动Applet程序前,编辑一个网页Keyboard.html,包含以下内容:<HTML><TITLE>Keyboard</TITLE><APPLETCODE="Keyboard.class"WIDTH=200HEIGHT=100></APPLET></HTML>5.技术分析1)与用户的交互用户可以通过鼠标与JavaApplet程序对话。2)处理图像JavaApplet使用的是GIF或JPEG格式的图像文件。Applet使用getImage方法把图像文件和Image对象联系起来。3)处理声音使用Applet播放声音时需首先定义AudioClip对象,getAudioClip方法能把声音赋予AudioClip对象。如果仅想把声音播放一遍,应调用AudioClip类的play方法,如果想循环把声音剪辑,应选用AudioClip类的loop方法。6.问题与思考编写一个Applet程序,当拖曳鼠标时,以按下鼠标和释放鼠标的位置为对角线绘制一个矩形。6.3匿名类简化图形事件处理程序知识要点

内部类概念

内部的种类[实例]用匿名类实现类InstanceOfHuman。1.详细设计classInstanceOfHumanextendsFrameimplementsActionListener{

窗口中各个对象的定义;publicInstanceOfHuman(){

图形界面的布局;

按钮的监听;

匿名类监听窗口;addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});

窗口调整;}

处理ActionEvent事件的方法actionPerformed();}2.编码实现程序的结构与前面主要的区别是用匿名类监听窗口,实现的语句如下:语句:addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});分析:直接用newWindowAdapter(){...}定义了一个类。这个类没有名字,所以称为匿名类。该匿名类在类InstanceOfHuman中定义,又称内部类,匿名类是内部类的一种。3.源代码

略。4.测试与运行测试程序如下:publicclassInstanceOfHumanTest{publicstaticvoidmain(Stringargs[]){newInstanceOfHuman();}}5.技术分析1)内部内概念在一个类的内部还有另外一个类,称为内部类,一般格式如下:class外部类{ class内部类{ }}2)内部类种类非静态内部类在类中定义类,称之为内部类(Innerclass)或巢状类(Nestedclass)。非“static”的内部类可以分为三种:成员内部类(Memberinnerclass)、区域内部类(Localinnerclass)与匿名内部类(Anonymousinnerclass)。

静态内部类内部类还可以被声明为"static",不过由于是"static",它不能存取外部类的方法,而必须通过外部类所生成的对象来调用。6.问题与思考使用内部匿名类,它继承Object类并改写其toString()方法,如下:Objectobj=newObject(){publicStringtoString(){return"匿名类对象";}};把它放入外部类Outer的main()方法中,并输出obj.toString()的结果。编译成功后本程序将生成几个类,它们的名字如何?6.4应用Swing创建用户

温馨提示

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

评论

0/150

提交评论