📜  Java小程序基础

📅  最后修改于: 2022-05-13 01:55:26.040000             🧑  作者: Mango

Java小程序基础

我们先来了解一下GUI支持多少个Package:

  1. AWT(抽象窗口工具包)
  2. 摇摆

制作 GUI 应用程序的回溯:
Java于 1996 年 1 月 23 日(JDK 1.0)推出,当时它只支持 CUI(字符用户界面)应用程序。但是在 1996 年微软的 VB(Visual Basic)被首选用于 GUI 编程。因此, Java开发人员在匆忙中(即在 7 天内)已经从操作系统(OS)给出了对 GUI 的支持。现在,按钮等组件是依赖于平台的(即在每个平台上都会有不同大小、形状的按钮)。但是他们对所有平台的这些组件进行了交集,并提供了一个包含这些交集的小型库,它可以在 AWT(Abstract Window Toolkit)技术中使用,但它没有对话框等高级功能。

现在要运行Applet, Java需要一个浏览器,当时只有微软的“Internet Explorer”,但微软相信垄断。于是“SUN Micro-System”(开发Java的公司)与另一家被称为“Netscape”(开发Java Script)的公司签约,现在“Netscape”公司也被称为“Mozilla Firefox”,我们都知道这是一个浏览器。现在,这两家公司开发了一种名为“SWING”的技术,好处是SWING组件是由Java自己生产的。因此,现在它是独立于平台的,并且还添加了一些 AWT 技术中没有的附加功能。所以我们可以说 SWING 比 AWT 技术要先进得多。

什么是小程序?
小程序是可以嵌入到网页中的Java程序。它在网络浏览器中运行并在客户端工作。小程序使用 APPLET 或 OBJECT 标记嵌入到 HTML 页面中,并托管在 Web 服务器上。
小程序用于使网站更具活力和娱乐性。

要点:

  1. 所有小程序都是Java.applet.Applet类的子类(直接或间接)。
  2. 小程序不是独立的程序。相反,它们在 Web 浏览器或小程序查看器中运行。 JDK 提供了一个标准的小程序查看器工具,称为小程序查看器。
  3. 一般来说,applet 的执行不是从 main() 方法开始的。
  4. System.out.println()不执行小程序窗口的输出。而是使用各种 AWT 方法处理它,例如drawString()

小程序的生命周期:

了解调用上图中显示的各种方法的顺序很重要。当 applet 开始时,将按以下顺序调用以下方法:

  1. 在里面( )
  2. 开始( )
  3. 画( )

当 applet 终止时,将发生以下方法调用序列:

  1. 停止( )
  2. 破坏( )

让我们更仔细地看看这些方法。

1. init() : init()方法是第一个被调用的方法。这是您应该初始化变量的地方。此方法仅在您的小程序运行时调用一次

2. start( ) :init( )之后调用start( )方法。它也被称为在一个小程序停止后重新启动它。请注意, init()调用一次,即第一次加载applet 时,而start()则在每次applet 的HTML 文档显示在屏幕上时调用。因此,如果用户离开网页并返回,则小程序会在start()处恢复执行。

3.paint():每次必须重绘基于AWT 的applet 的输出时,都会调用paint()方法。这种情况可能有几个原因。例如,运行小程序的窗口可能会被另一个窗口覆盖,然后再被覆盖。或者小程序窗口可能被最小化然后恢复。
当小程序开始执行时,也会调用paint() 。不管是什么原因,每当applet 必须重绘它的输出时, paint()就会被调用。
paint()方法有一个图形类型的参数。此参数将包含图形上下文,它描述了小程序运行的图形环境。每当需要输出到小程序时,都会使用此上下文。
注意:这是上面提到的所有方法中唯一的方法,它是参数化的。它的原型是
公共无效油漆(图形g)
其中 g 是类 Graphic 的对象引用。

现在问题来了:

Q.在paint() 方法的原型中,我们创建了一个对象引用,但没有创建它的对象。但是如何在不创建对象的情况下创建对象引用呢?

答。每当我们在参数中传递对象引用时,对象将由其调用者本身提供。在这种情况下,paint() 方法的调用者是浏览器,所以它会提供一个对象。当我们在普通的Java程序中创建一个非常基本的程序时,也会发生同样的事情。例如:

public static void main(String []args){}

在这里,我们创建了一个对象引用,但没有创建它的对象,但它仍然运行,因为它是调用者,即 JVM 将为它提供一个对象。

4. stop( ) :当 Web 浏览器离开包含 applet 的 HTML 文档时调用stop()方法——例如,当它转到另一个页面时。当调用stop( )时,applet 可能正在运行。当applet 不可见时,您应该使用stop()来挂起不需要运行的线程。如果用户返回页面,您可以在调用start( )时重新启动它们。

5. destroy():当环境确定你的小程序需要从内存中完全删除时,会调用destroy()方法。此时,您应该释放小程序可能正在使用的所有资源。 stop()方法总是在destroy()之前调用。

创建 Hello World 小程序:
让我们从 HelloWorld 小程序开始:

Java
// A Hello World Applet
// Save file as HelloWorld.java
 
import java.applet.Applet;
import java.awt.Graphics;
 
// HelloWorld class extends Applet
public class HelloWorld extends Applet
{
    // Overriding paint() method
    @Override
    public void paint(Graphics g)
    {
        g.drawString("Hello World", 20, 20);
    }
     
}


Java
// A Hello World Applet
// Save file as HelloWorld.java
 
import java.applet.Applet;
import java.awt.Graphics;
 
/*


*/
 
// HelloWorld class extends Applet
public class HelloWorld extends Applet
{
    // Overriding paint() method
    @Override
    public void paint(Graphics g)
    {
        g.drawString("Hello World", 20, 20);
    }
     
}


Java
//code to illustrate paint 
//method gets called again
//and again
   
import java.applet.*;// used
//to access showStatus()
import java.awt.*;//Graphic
//class is available in this package
import java.util.Date;// used 
//to access Date object
public class GFG extends Applet
{
public void paint(Graphics g)
{
Date dt = new Date();
super.showStatus("Today is" + dt);
//in this line, super keyword is
// avoidable too.
}
}


解释:

  1. 上面的Java程序以两个 import 语句开始。第一个 import 语句从 applet 包中导入 Applet 类。您创建的每个基于 AWT(抽象窗口工具包)的小程序都必须是小程序类的子类(直接或间接)。第二条语句从 AWT 包中导入 Graphics 类。
  2. 程序的下一行声明类 HelloWorld。这个类必须声明为公共的,因为它将被程序外部的代码访问。在 HelloWorld 中, paint()被声明。此方法由 AWT 定义,并且必须由 applet 覆盖。
  3. 内部paint()是对drawString()的调用,它是Graphics 类的成员。此方法输出从指定 X,Y 位置开始的字符串。它具有以下一般形式:
void drawString(String message, int x, int y)

这里,message 是要从 x,y 开始输出的字符串。在Java窗口中,左上角是位置 0,0。小程序中对drawString()的调用导致消息“Hello World”从位置 20,20 开始显示。

请注意,小程序没有main()方法。与Java程序不同,applet 不会在main()处开始执行。事实上,大多数小程序甚至没有main()方法。相反,当其类的名称被传递给小程序查看器或网络浏览器时,小程序开始执行。

运行 HelloWorld 小程序:
输入 HelloWorld 的源代码后。 Java,以与编译Java程序相同的方式进行编译(使用javac命令)。但是,使用Java命令运行 HelloWorld 会产生错误,因为它不是应用程序。

java HelloWorld

Error: Main method not found in class HelloWorld, 
please define the main method as:
   public static void main(String[] args)

两种标准方式可以运行小程序:

  1. 在兼容 Java 的 Web 浏览器中执行小程序。
  2. 使用小程序查看器,例如标准工具 applet-viewer。小程序查看器在窗口中执行您的小程序。这通常是测试您的小程序的最快和最简单的方法。

下面将描述这些方法中的每一个。

1. 使用启用Java的网络浏览器:要在网络浏览器中执行小程序,我们必须编写一个简短的 HTML 文本文件,其中包含一个加载小程序的标记。为此,我们可以使用 APPLET 或 OBJECT 标签。使用 APPLET,这里是执行 HelloWorld 的 HTML 文件:


width 和 height 语句指定小程序使用的显示区域的尺寸。 APPLET 标签包含其他几个选项。创建此 html 文件后,您可以使用它来执行小程序。

注意: Chrome 和 Firefox 不再支持 NPAPI( Java小程序所需的技术)。参考这里

2. 使用appletviewer:这是运行applet 最简单的方法。要使用小程序查看器执行 HelloWorld,您还可以执行前面显示的 HTML 文件。例如,如果前面的 HTML 文件保存为
运行HelloWorld.html,然后下面的命令行将运行 HelloWorld :

appletviewer RunHelloWorld.html

HelloWorld 小程序

3. 带有Java源文件的 appletviewer:如果您在包含 APPLET 标记的Java源代码文件的开头包含一个注释,那么您的代码将与必要的 HTML 语句的原型一起记录,您只需通过以下方式运行编译的 applet使用您的Java源代码文件启动小程序查看器。如果使用此方法,HelloWorld 源文件如下所示:

Java

// A Hello World Applet
// Save file as HelloWorld.java
 
import java.applet.Applet;
import java.awt.Graphics;
 
/*


*/
 
// HelloWorld class extends Applet
public class HelloWorld extends Applet
{
    // Overriding paint() method
    @Override
    public void paint(Graphics g)
    {
        g.drawString("Hello World", 20, 20);
    }
     
}

使用这种方法,首先编译 HelloWorld。 Java文件,然后只需运行以下命令即可运行小程序:

appletviewer HelloWorld

为了证明上述观点,即一次又一次地调用paint。

为了证明这一点,我们先来研究一下什么是Applet中的“状态栏”:
“状态栏”在小程序的左下方窗口中可用。要使用状态栏并在其中写入内容,我们使用方法 showStatus(),其原型为
公共无效显示状态(字符串)
默认状态栏显示“Applet Started”
默认背景颜色为白色。

为了证明paint()方法被一次又一次地调用,下面是代码:

注意:此代码与 Netbeans IDE 相关。

Java

//code to illustrate paint 
//method gets called again
//and again
   
import java.applet.*;// used
//to access showStatus()
import java.awt.*;//Graphic
//class is available in this package
import java.util.Date;// used 
//to access Date object
public class GFG extends Applet
{
public void paint(Graphics g)
{
Date dt = new Date();
super.showStatus("Today is" + dt);
//in this line, super keyword is
// avoidable too.
}
}

注意:- 在这里我们可以看到,如果屏幕最大化或最小化,我们将获得更新的时间。这表明paint() 被一次又一次地调用。

基于 HTML 的 Applet 的功能

  • 显示 Web 应用程序的动态网页。
  • 播放声音文件。
  • 显示文件
  • 播放动画

对Java小程序施加的限制

出于安全原因,对Java小程序施加以下限制:

  1. 小程序不能加载库或定义本地方法。
  2. 小程序通常不能在执行主机上读取或写入文件。
  3. 小程序无法读取某些系统属性。
  4. 小程序不能建立网络连接,除非它来自它的主机。
  5. 小程序无法在正在执行它的主机上启动任何程序。