亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java - 小程序基础

小程序 是在 Web 浏览器中运行的 Java 程序。小程序可以是功能齐全的 Java 应用程序,因为它拥有整个 Java API 供其使用。

小程序和独立 Java 应用程序之间有一些重要的区别,包括以下内容 -

小程序的生命周期

Applet 类中的四种方法为您提供了构建任何重要小程序的框架 -

“Hello, World”小程序

以下是一个名为 HelloWorldApplet.java 的简单小程序 -

import java.applet.*;
import java.awt.*;

public class HelloWorldApplet extends Applet {
   public void paint (Graphics g) {
      g.drawString ("Hello World", 25, 50);
   }
}

这些导入语句将这些类带入了我们的小程序类的范围 -

如果没有这些 import 语句,Java 编译器将无法识别 Applet 类所引用的 Applet 和 Graphics 类。

小程序类

每个小程序都是 java.applet.Applet 类的扩展 .基 Applet 类提供了派生 Applet 类可以调用的方法,以从浏览器上下文中获取信息和服务。

这些包括执行以下操作的方法 -

此外,Applet 类提供了一个接口,查看器或浏览器通过该接口获取有关 applet 的信息并控制 applet 的执行。观看者可能 -

Applet 类提供了这些方法的默认实现。这些实现可以根据需要被覆盖。

“Hello, World”小程序就这样完成了。唯一被覆盖的方法是paint方法。

调用小程序

可以通过在 HTML 文件中嵌入指令并通过小程序查看器或支持 Java 的浏览器查看文件来调用小程序。

标签是在 HTML 文件中嵌入 applet 的基础。以下是调用“Hello, World”小程序的示例 -

<html>
   <title>The Hello, World Applet</title>
   <hr>
   <applet code = "HelloWorldApplet.class" width = "320" height = "120">
      If your browser was Java-enabled, a "Hello, World"
      message would appear here.
   </applet>
   <hr>
</html>

注意 − 可以参考 HTML Applet Tag 了解更多关于从 HTML 调用 applet 的内容。

标签的 code 属性是必需的。它指定要运行的 Applet 类。还需要宽度和高度来指定运行小程序的面板的初始大小。 applet 指令必须用 标记关闭。

如果applet 接受参数,则可以通过在 之间添加 标记来为参数传递值。浏览器会忽略小程序标签之间的文本和其他标签。

不支持 Java 的浏览器不处理 。因此,标签之间出现的任何与小程序无关的内容,在不支持 Java 的浏览器中都是可见的。

查看器或浏览器在文档位置查找已编译的 Java 代码。要另外指定,请使用 标记的代码库属性,如图所示 -

<applet codebase = "https://amrood.com/applets" code = "HelloWorldApplet.class"
   width = "320" height = "120">

如果小程序驻留在默认值以外的包中,则必须在代码属性中使用句点字符 (.) 来指定保存包以分隔包/类组件。例如 -

<applet  = "mypackage.subpackage.TestApplet.class" 
   width = "320" height = "120">

获取小程序参数

以下示例演示如何使小程序响应文档中指定的设置参数。此小程序显示黑色和第二种颜色的棋盘格图案。

第二种颜色和每个方块的大小可以作为参数指定给文档中的小程序。

CheckerApplet 在 init() 方法中获取其参数。它也可以在paint() 方法中获取它的参数。但是,在小程序启动时获取值并保存设置一次,而不是每次刷新,这样既方便又高效。

小程序查看器或浏览器调用它运行的每个小程序的 init() 方法。查看器在加载小程序后立即调用一次 init()。 (Applet.init() 实现什么都不做。)覆盖默认实现以插入自定义初始化代码。

Applet.getParameter() 方法获取给定参数名称的参数(参数的值始终是字符串)。如果值为数值或其他非字符数据,则必须对字符串进行解析。

以下是 CheckerApplet.java 的骨架 -

import java.applet.*;
import java.awt.*;

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   public void init() {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

这是 CheckerApplet 的 init() 和私有 parseSquareSize() 方法 -

public void init () {
   String squareSizeParam = getParameter ("squareSize");
   parseSquareSize (squareSizeParam);
   
   String colorParam = getParameter ("color");
   Color fg = parseColor (colorParam);
   
   setBackground (Color.black);
   setForeground (fg);
}

private void parseSquareSize (String param) {
   if (param == null) return;
   try {
      squareSize = Integer.parseInt (param);
   } catch (Exception e) {
      // Let default value remain
   }
}

小程序调用 parseSquareSize() 来解析 squareSize 参数。 parseSquareSize() 调用库方法 Integer.parseInt(),它解析一个字符串并返回一个整数。每当其参数无效时,Integer.parseInt() 都会抛出异常。

因此,parseSquareSize() 会捕获异常,而不是让小程序因输入错误而失败。

小程序调用 parseColor() 将颜色参数解析为颜色值。 parseColor() 进行一系列字符串比较,以将参数值与预定义颜色的名称相匹配。您需要实现这些方法才能使这个小程序工作。

指定小程序参数

下面是一个嵌入了 CheckerApplet 的 HTML 文件示例。 HTML 文件通过 标记为小程序指定两个参数。

<html>
   <title>Checkerboard Applet</title>
   <hr>
   <applet code = "CheckerApplet.class" width = "480" height = "320">
      <param name = "color" value = "blue">
      <param name = "squaresize" value = "30">
   </applet>
   <hr>
</html>

注意 − 参数名称不区分大小写。

应用程序转换为小程序

将图形 Java 应用程序(即使用 AWT 并且可以从 Java 程序启动器启动的应用程序)转换为可以嵌入网页中的小程序很容易。

以下是将应用程序转换为小程序的具体步骤。

  • 制作一个带有适当标签的 HTML 页面来加载小程序代码。

  • 提供 JApplet 类的子类。将此课程公开。否则无法加载小程序。

  • 消除应用程序中的主要方法。不要为应用程序构建框架窗口。您的应用程序将显示在浏览器中。

  • 将任何初始化代码从框架窗口构造函数移动到小程序的 init 方法。您不需要显式构造小程序对象。浏览器为你实例化它并调用init方法。

  • 移除对 setSize 的调用;对于小程序,大小是通过 HTML 文件中的宽度和高度参数来完成的。

  • 删除对 setDefaultCloseOperation 的调用。小程序无法关闭;它在浏览器退出时终止。

  • 如果应用程序调用 setTitle,则消除对该方法的调用。小程序不能有标题栏。 (当然,您可以使用 HTML 标题标签为网页本身命名。)

  • 不要调用 setVisible(true)。小程序会自动显示。

事件处理

Applet 从 Container 类继承了一组事件处理方法。 Container 类定义了几个方法,例如 processKeyEvent 和 processMouseEvent,用于处理特定类型的事件,然后定义了一个包罗万象的方法,称为 processEvent。

为了对事件做出反应,小程序必须覆盖适当的事件特定方法。

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet implements MouseListener {
   StringBuffer strBuffer;

   public void init() {
      addMouseListener(this);
      strBuffer = new StringBuffer();
      addItem("initializing the apple ");
   }

   public void start() {
      addItem("starting the applet ");
   }

   public void stop() {
      addItem("stopping the applet ");
   }

   public void destroy() {
      addItem("unloading the applet");
   }

   void addItem(String word) {
      System.out.println(word);
      strBuffer.append(word);
      repaint();
   }

   public void paint(Graphics g) {
      // Draw a Rectangle around the applet's display area.
      g.drawRect(0, 0, 
      getWidth() - 1,
      getHeight() - 1);

      // display the string inside the rectangle.
      g.drawString(strBuffer.toString(), 10, 20);
   }

   
   public void mouseEntered(MouseEvent event) {
   }
   public void mouseExited(MouseEvent event) {
   }
   public void mousePressed(MouseEvent event) {
   }
   public void mouseReleased(MouseEvent event) {
   }
   public void mouseClicked(MouseEvent event) {
      addItem("mouse clicked! ");
   }
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>Event Handling</title>
   <hr>
   <applet code = "ExampleEventHandling.class" 
      width = "300" height = "300">
   </applet>
   <hr>
</html>

最初,小程序将显示“正在初始化小程序。启动小程序”。然后在矩形内单击后,也会显示“鼠标单击”。

显示图片

小程序可以显示 GIF、JPEG、BMP 等格式的图像。要在小程序中显示图像,请使用 java.awt.Graphics 类中的 drawImage() 方法。

以下是一个示例,说明了显示图像的所有步骤 -

import java.applet.*;
import java.awt.*;
import java.net.*;

public class ImageDemo extends Applet {
   private Image image;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String imageURL = this.getParameter("image");
      if(imageURL == null) {
         imageURL = "java.jpg";
      }
      try {
         URL url = new URL(this.getDocumentBase(), imageURL);
         image = context.getImage(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         // Display in browser status bar
         context.showStatus("Could not load image!");
      }
   }
   
   public void paint(Graphics g) {
      context.showStatus("Displaying image");
      g.drawImage(image, 0, 0, 200, 84, null);
      g.drawString("www.javalicense.com", 35, 100);
   }  
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "300" height = "200">
      <param name = "image" value = "java.jpg">
   </applet>
   <hr>
</html>

播放音频

小程序可以播放由 java.applet 包中的 AudioClip 接口表示的音频文件。 AudioClip 接口有三个方法,包括 -

  • 公共无效播放() − 从头开始​​播放一次音频片段。

  • 公共无效循环() − 使音频片段不断重播。

  • 公共无效停止() − 停止播放音频片段。

要获取 AudioClip 对象,您必须调用 Applet 类的 getAudioClip() 方法。无论 URL 是否解析为实际的音频文件,getAudioClip() 方法都会立即返回。在尝试播放音频剪辑之前,不会下载音频文件。

以下是一个示例,说明了播放音频的所有步骤 -

import java.applet.*;
import java.awt.*;
import java.net.*;

public class AudioDemo extends Applet {
   private AudioClip clip;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String audioURL = this.getParameter("audio");
      if(audioURL == null) {
         audioURL = "default.au";
      }
      try {
         URL url = new URL(this.getDocumentBase(), audioURL);
         clip = context.getAudioClip(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }
   
   public void start() {
      if(clip != null) {
         clip.loop();
      }
   }
   
   public void stop() {
      if(clip != null) {
         clip.stop();
      }
   }
}

现在,让我们按如下方式调用这个小程序 -

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "0" height = "0">
      <param name = "audio" value = "test.wav">
   </applet>
   <hr>
</html>

您可以在您的 PC 上使用 test.wav 来测试上面的例子。


java

  1. Java 运算符
  2. Java 评论
  3. Java if...else 语句
  4. Java for-each 循环
  5. Java 字符串
  6. Java 接口
  7. Java 匿名类
  8. Java try-with-resources
  9. Java 注释
  10. Java 断言
  11. Java 向量
  12. Java - 小程序基础