国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

具有 Applet & Application 雙重身份的類

2019-11-18 11:56:15
字體:
來源:轉載
供稿:網友

  Applet(小應用程序) 就用于網頁中,美化和豐富網頁的內容,由瀏覽器治理其生命周期(Life Cycle), 即生成(new)、初始化(init)、運行(start)、停止(stop)和銷毀(destroy)等。寫 applet,必須從 java.applet.Applet 類繼續,并根據需要重載 init()(applet 被讀入系統時由瀏覽器調用,只調用一次,初始化 appet), start()(瀏覽器運行 applet 時調用), stop()(瀏覽器停止 applet 時調用), destroy()(applet 被銷毀時調用,在這里釋放一些需要釋放的資源) 等方法。如下例是一個簡單的、什么都不做的 applet:
  /**
   * @(#) MyApplet.java
   * @author fancy
   */
  
  import java.applet.*;
  
  public class MyApplet extends Applet { // ! 必須從 java.applet.Applet 繼續 !
  
  }
    application(應用程序) 是能使用 java 命令運行的 java 應用程序,它以一個特定的 main() 方法為入口,自行治理其生命周期。寫一個 application 則必須要實現上述特定的 main() 方法。該 main() 方法必須是 public(公有)、static(靜態)、void(無返回值) 的,而且必須要求一個 String[] 類型的參數。如下例是一個簡單的,什么都不做的 application:
  
  /**
   * @(#) MyApplication.java
   * @author fancy
   */
  
  public class MyApplication
  {
  
    public static void main(String[] args)
      {
      // ! 必須要有一個 pulic static void main(String[]) 方法 !
      }
  
  }
    簡單的介紹過 applet 和 application 的要點之后,下面我們要進入主題了——寫一個類,
  它即是 applet 又是 application。
  
    根據上述 applet 和 application 的特點和要求,這個類必須從 java.applet.Applet 繼
  承,且實現了 public static void main(String[]) 方法,如下例,它同樣什么都不做:
  
  /**
   * @(#) MyAppletApplication.java
   * @author fancy
   */
  
  import java.applet.*;
  
  public class MyAppletApplication extends Applet
  {
    // ! ① 從 java.applet.Applet 繼續 !
     public static void main(String[] args)
    {
       // ! ② 實現了 public static void main(String[]) 方法 !
    }
  }
    上面說的各類都是什么都不做的,假如要做什么又該怎么辦呢?
  
    由于 applet 是瀏覽器治理其生命周期,即由瀏覽器生成 applet 實例和調用它從
  java.applet.Applet 類繼續的 init()、start()、stop() 和 destroy() 等方法;而
  application 是由自己治理生命周期,需要自己生成實例并調用相關方法。所以我們的
  MyAppletApplication 類必須根據需要實現 init()、start()、stop() 和 destroy() 等方法,
  以便瀏覽器對其生命周期進行治理;同時,也必須在那個特定的 main() 方法中生成該類的實例
  (對象),并調用用于治理期生命周期的相關方法。如
  
  /**
   * @(#) MyAppletApplication.java
   * @author fancy
   */
  
  import java.applet.*;
  
  public class MyAppletApplication extends Applet {
  
    public static void main(String[] args) {
      MyAppletApplication app = new yAppletApplication(); // ①生成實例
      ......
      app.init(); // ② 初始化
      ......
      app.start(); // ③ 開始運行
      ......
      app.stop(); // ④ 停止運行
      ......
      app.destroy(); // ⑤ 銷毀
      ......
    }
  
  }
    其實做到這些還是不夠的,因為一個 applet 放入網頁中,就由瀏覽器負責對其進行繪制(顯
  示),而在應用程序中,則需要我們使用相關部件對其進行繪制。值得慶幸的是,
  java.applet.Applet 從 java.awt.Componnet 繼續,它就是一個 AWT 部件(Component),我們只
  需要將它加入到一個 Frame 或者 Window 中即可實現對它的繪制。至此,所有的問題都已經解決
  了,請看下例:
  
  /**
   * @(#) MyAppletApplication.java
   * @author fancy
   */
  
  import java.applet.*;
  import java.awt.*;
  import java.awt.event.*;
  
  public class MyAppletApplication extends Applet { // 從 java.applet.Applet 繼續
  
    PRivate List list;
  
    public void init() { // 初始化
      list = new List();
      add(list);
      list.addItem("Initializing");
      System.out.println("Initializing");
    }
  
    public void start() { // 開始運行時
      list.addItem("Starting");
      System.out.println("Starting");
    }
  
    public void stop() { // 結束運行時
      list.addItem("Stopping"); // 這句看不到效果
      System.out.println("Stopping");
    }
  
    public void destroy() { // 銷毀時
      list.addItem("Destroying"); // 這句看不到效果
      System.out.println("Destroying");
    }
  
    public static void main(String[] args) {
      MyAppletApplication app = new MyAppletApplication();
      app.init();
      app.start();
      Frame frame = new Frame();
      frame.add(app);
      frame.addWindowListener(new MyWindowListener(app));
      frame.setSize(200, 150);
      frame.show();
    }
  
    public static class MyWindowListener extends WindowAdapter {
  
      Applet applet;
  
      public MyWindowListener(Applet applet) {
        this.applet = applet;
      }
  
      public void windowClosing(WindowEvent event) {
        applet.stop();
        applet.destroy();
        System.exit(0);
      }
  
    }
  
  }
    備注:上例中,在 stop() 和 destroy() 中為 list 添加項是看不到效果的,因為此時applet 已經停止或者正在銷毀,它作為 application 身份時也一樣。另外,所有的System.out.println() 語句在上例作為 applet 時也是看不到的。
  
  注重:并不是所有的小應用程序都可能同時也是應用程序,因為有一些在小應用程序中的功能不能用于應用程序中,如 Applet.getCodeBase()、Applet.getDocumentBase() 等在 Application中應用時就會拋異常。而一些在 Application 中可以使用的內容,由于安全問題,也不能在 Applet 中使用,究竟 Applet 是要發布在網上的,需要更高的安全性。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬安县| 晋宁县| 永吉县| 无锡市| 卢龙县| 邢台市| 上高县| 班戈县| 萝北县| 察哈| 阳新县| 白河县| 库尔勒市| 湖口县| 长沙县| 四会市| 揭东县| 朝阳市| 贡山| 宁城县| 大理市| 景德镇市| 石家庄市| 陆河县| 彭山县| 屏山县| 三原县| 丰原市| 新宾| 鹤庆县| 那坡县| 咸丰县| 湖北省| 永和县| 彩票| 兴山县| 大方县| 巴彦县| 常德市| 班戈县| 湖南省|