`

实验 9 综合练习

阅读更多
一、实验目的
    将所学知识进行综合运用,模仿设计具有实际意义的应用程序。锻炼使用新类(没有介绍的)类的能力。
二、实验要求
在计算机上实现指导书中应用程序。
分析应用程序中使用了哪些系统类,指出使用该类的变量与方法。说明创建了什么类。包含什么变量与方法。
能根据实际需要使用不同的系统类编写应用程序。
三、实验内容
(一)幻灯机效果——连续显示多幅图像
程序功能:如果 Applet 仅仅是显示一幅图像,没有什么特别的意义,不如直接在 HTML 文件中显示图像。本程序可以像幻灯机那样连续显示多幅图像
在当前目录中的 image 文件夹中准备 6 幅花的图像文件。
编写 KY9_1.java 程序文件,源代码如下。
        import java.awt.*;
        import java.awt.event.*;
        import java.applet.*;
        public class KY8_1 extends Applet {
          int index;
          Image imgs[]=new Image[6];
          public void init(){
            addMouseListener(new MouseAdapter() {
              public void mouseClicked(MouseEvent e) {
                index=++index%6;
                repaint();
              }
            };
           for (int i=0; i<6; i++)
              imgs[i]=getImage(getCodeBase(),"image/花"+(i+1)+".gif");
           }
           public void paint(Graphics g){
            if (imgs[index]!=null)
              g.drawImage(imgs[index],60,20,this);
           }
         }
在这个程序中,加载了 6 幅图像,点击鼠标可逐一显示图像,并在显示完 6 幅图像后自动返回第一幅重新开始。
对程序进行分析,写出分析结果。
(二)使用滚动条改变背景颜色
1. 程序功能:移动滚动条可以改变背景颜色。运行结果如图 8.2 所示。
2. 编写 KY9_2.java 程序文件,源代码如下。
   import java.applet.Applet;
   import java.awt.*;
   import java.awt.event.*;
   import java.awt.Scrollbar;
   import java.awt.Color;
   public class KY8_2 extends Applet implements AdjustmentListener {
     Scrollbar r1,r2,r3;
     int red,green,blue;
     TextField t;Label a;
     public void init() {
        setLayout(null);
        r1=new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
        r2=new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
        r3=new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
        t=new TextField("0",5);
        t.setEditable(false);
        a=new Label("移动滚动条可改变背景颜色",Label.CENTER);
        add(a);a.setBounds(120,10,150,15);
        add(r1);r1.setBounds(20,30,100,20);
            add(r2);r2.setBounds(140,30,100,20);
            add(r3);r3.setBounds(260,30,100,20);
            add(t);t.setBounds(20,120,220,18);
            r1.addAdjustmentListener (this);
            r2.addAdjustmentListener (this);
            r3.addAdjustmentListener (this);
          }
        public void adjustmentValueChanged(AdjustmentEvent e) {
        red=r1.getValue();
        green=r2.getValue();
        blue=r3.getValue();
        t.setText("red 的值"+String.valueOf(r1.getValue())+
        ",green 的值"+String.valueOf(r2.getValue())+",blue 的值"+
        String.valueOf(r3.getValue()));
        Color c=new Color(red,green,blue);
        setBackground(c);
        }
        }
    3.对程序进行分析,写出分析结果。

(三)Applet 与 Application 合并运行
    Java Applet 和 Application 程序的区别在于运行方式不同。那么能不能将它们合并起来,让同
一个程序既可以由浏览器运行又可以单独运行呢?
    1.程序功能:在 Applet 与 Application 方式下都能运行。
    2.编写 KY9_3.java 程序文件,源代码如下。
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    public class KY9_3 extends Applet implements ActionListener {
      Button button;
      TextField field;
      public static void main(String[] args) {
        Frame window=new Frame("AppDemo"); // 创建窗口对象
        AppDemo app=new AppDemo(); // 创建程序对象
        window.add("Center", app); // 将程序对象添加到窗口
        app.init(); // 调用程序的初始化方法
        window.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            System.exit(0);
          }
        }); // 以上用匿名类的方式为窗口添加关闭功能
        window.setSize(300,120); // 设定窗口大小
        window.setVisible(true); // 设定窗口可见
      }
      public void init() {
        button=new Button("显示");
        button.addActionListener(this);
        field=new TextField(23);
        add(field);
        add(button);
      }
      public void actionPerformed(ActionEvent e) {
        field.setText("Applet 与 Application 的合并运行");
      }
    }
3. 编译 KY9_3.java 源程序。
4. 编写浏览 Applet 的页面文件 KY9_3.html,在浏览器打开文件 KY9_3.htm
5. 在独立运行的 Application 方式下运行 KY9_3.class 字节文件
(四)创建电闪雷鸣的动画
    1.程序功能:本程序可以通过按钮控制声音和动画的开始和停止操作。动画显示了电闪雷鸣的场面。注意:图像文件要分别表现不同时间段的电闪场面,这样才会有动画效果。
    2.编写 KY9_4.java 程序文件,源代码如下。
    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    public class KY9_4 extends Applet implements Runnable,ActionListener {
        Image iImages[];                       //图像数组
        Thread aThread;
        int iFrame;                            //图像数组下标
    AudioClip au;                         //定义一个声音对象
    Button b1,b2;
    public void init() {
        int i,j;
        iFrame=0;
        aThread=null;
        iImages = new Image[10];
       for (i=0;i<10;i++)  {
          iImages[i] =getImage(getCodeBase(),"image/"+"tu"+(i+1)+".JPG");
        }
        au=getAudioClip(getDocumentBase(),"Wav/Sound.wav");
        au.play();                        //播放一次声音文件
        Panel p1 = new Panel();
        b1 = new Button("开始");
        b2 = new Button("停止");
        p1.add(b1);
        p1.add(b2);
        b1.addActionListener(this);
        b2.addActionListener(this);
        setLayout(new BorderLayout());
        add(p1,"South");
    }
    public void start()  {
        if (aThread == null)
        {
            aThread = new Thread(this);
            aThread.start();             //线程启动
            b1.setEnabled(false);
        }
    }
    public void stop()  {
     if (aThread != null) {
       aThread.interrupt();          //线程中断
        aThread = null;
        au.stop();                    //停止播放声音文件
     }
}
public void run() {
    while (true)
    {
        iFrame++;
        iFrame %= (iImages.length); //下一幅图像的下标
        repaint();
        try  {
            Thread.sleep(50);
        }
        catch (InterruptedException e)
        {                             //中断时抛出
           break;                    //退出循环
        }
    }
}
public void update(Graphics g) {
    g.drawImage(iImages[iFrame],0,0,this);
}
public void actionPerformed(ActionEvent e) {
   if ((e.getSource()==b1) && (aThread == null) )
   { //单击 Start 按钮时触发
        aThread = new Thread(this);
       aThread.start();              //线程启动
        b1.setEnabled(false);
               b2.setEnabled(true);
               au.loop();                     //循环播放声音文件
          }
          if ((e.getSource()==b2) && (aThread != null) )
          {                                   //单击 Stop 按钮时触发
               aThread.interrupt();           //线程中断
               aThread = null;
               b1.setEnabled(true);
               b2.setEnabled(false);
               au.stop();                     //停止播放声音文件
          }
      }
   }
   3.编译源程序。
   4.编写浏览 Applet 的页面文件,在浏览器运行结果
分享到:
评论

相关推荐

    CCNA3 综合实验与配置练习

    思科网络技术学院专用教材的课本内练习和综合实验,知识点覆盖非常全面全面,值得一看。

    CCNA4 综合实验与配置练习

    思科网络技术学院专用教材的课本内练习和综合实验,知识点覆盖非常全面全面,值得一看。

    华为模拟器eNSP练习题-HCIA综合实验

    【华为模拟器eNSP练习题-HCIA综合实验】是一个针对华为认证HCIA(Huawei Certified ICT Associate)级别的实践训练,旨在帮助学习者熟悉网络基础及华为设备的配置与管理。eNSP(Enterprise Network Simulation ...

    2020年中考物理实验集中专项训练第9练热学实验含解析

    在探讨中考物理实验的专项训练时,我们不得不提及热学实验的重要性。热学,作为物理学的一个分支,它涵盖了与温度、热量以及物质状态变化等相关的一系列科学知识。热学实验不仅能够帮助学生理解抽象的物理概念,还...

    西工大综合创作训练三实验二

    在“西工大综合创作训练三实验二”中,我们主要关注的是计算器代码的实现,这是一个常见的软件工程实践项目,旨在提升学生的编程能力和对软件设计的理解。在这个实验中,目标是构建一个能够执行多种计算操作的计算器...

    2020年中考物理实验集中专项训练第1练声学实验含解析

    综合以上内容,2020年中考物理实验集中专项训练的第1练,通过一系列精心设计的声学实验,帮助学生全面理解声音的产生、传播以及声音的特性。通过触摸、观察和比较,学生能够以直观的方式感受到声音的物理属性,为...

    2020年中考物理实验集中专项训练第15练拓展创新型实验专练含解析

    2020年中考物理实验集中专项训练第15练拓展创新型实验专练,旨在通过实际操作与分析,加深学生对物理知识的理解,特别是对电流、电阻、电功率、磁性以及光学等知识点的综合运用。通过这些练习,学生将能更好地应对...

    华为eNSP拓扑综合实验-HCIA综合

    本实验是针对HCIA(Huawei Certified ICT Associate)级别的综合训练,旨在帮助学习者掌握基础的网络知识,包括但不限于路由协议、交换技术、网络设备配置等。 拓扑图在任何网络实验中都是核心部分,它描绘了网络...

    思科网络学院CCNA Packet Tracer全部实验练习

    《思科网络学院CCNA Packet Tracer全部实验练习》是一套全面覆盖CCNA认证所需技能的实践教程。这个资源包含了网络基础、路由与概念、交换与无线以及接入WAN四个主题的相关实验,旨在帮助学习者深入理解并掌握网络...

    电子技术应用实验教程实验报告综合篇(含答案)电子科技大学-大三上.doc

    "电子技术应用实验教程实验报告综合篇" 本文档是电子技术应用实验教程实验报告的综合篇,涵盖了数字示波器、信号发生器和稳压电源等多种电子测量仪器的使用和原理。通过学习和实验,学生可以熟悉电子技术应用的基本...

    实验六 SQL 语句综合训练

    实验六 SQL 语句综合训练 三个综合训练都有, 综合练习一 设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。现要建立关于系、学生、班级的数据库,关系模式为: 综合练习二 有某个...

    实验一、综合技巧练习

    【实验一、综合技巧练习】主要涉及的是对网络模拟工具Packet Tracer的使用和学习,这个工具被广泛应用于网络概念的教学中,以弥补实际设备和时间的限制。Packet Tracer提供了一个模拟网络环境,可以创建网络模型,...

    2020年中考物理实验集中专项训练第14练电磁学实验电与磁含解析

    综合以上知识点,可以看出2020年中考物理实验集中专项训练第14练电磁学实验电与磁部分的内容既丰富又实用。通过对这些知识点的深入解析和实验操作的练习,学生不仅能巩固电与磁的基础理论,还能培养解决实际问题的...

    2020年中考物理实验集中专项训练第2练光学实验含解析

    在中考物理实验的专项训练中,光学实验通常包括选择型和填空型的实验专练题目。 1. **小孔成像**:小孔成像是光沿直线传播的直观表现。在实验中,如果小孔靠近物体,而纸屏离小孔的距离增大,根据小孔成像的原理,...

    化学实验基本操作专项练习题.doc

    这篇文档似乎是一份化学实验基础操作的专项练习题,包含了多项选择题,涉及了实验操作的正确性、安全规范以及化学实验器材的使用等方面。这些问题旨在检验学生对化学实验基本技能的理解和掌握,包括但不限于量取液体...

    无线通信技术综合训练实验报告.pdf

    无线通信技术综合训练实验报告

    中考化学实验题专题训练及答案解析.doc

    【中考化学实验题专题训练及答案解析】 化学实验在中考中占据重要地位,尤其是在化学科目的考核中,实验题能够全面考察学生的理论知识与实践能力。以下是对几个实验题目的详细解析: 1. 实验室制取纯净、干燥的...

    JavaWeb实验五 综合训练至尊版

    实验五 综合训练 一、实验目的 1.了解MVC思想。 2.熟悉Java Web的各种开发技术。 二、实验学时 4H 三、实验性质 综合性实验 四、实验内容 1.创建表t_student,其中包含学号stuno,姓名stuname,性别stusex三个...

    中考物理实验题专项训练题全套.doc

    【中考物理实验题专项训练题】的文档涵盖了多个实验主题,包括平面镜成像、凸透镜成像以及观察水的沸腾和晶体熔化的实验。这些实验是初中物理的重要组成部分,旨在帮助学生理解和掌握光学和热力学的基本概念。 **一...

    Packet Tracer 实验练习

    学习网络基础离不开Packert Tracer,本资源是用来配套网络基础学习过程中深刻了解所学知识的练习性模拟实验的,很值得下载

Global site tag (gtag.js) - Google Analytics