<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      JAVA圖文說明教程 第6講 Java的線程與Java Applet(二)

      [摘要]6.3 Java Applet   前面的章節我們闡述了Application的應用,這一講我們將介紹java的另一類應用java Applet,即java小應用程序。   在Java問世的頭幾年里,之所以如此熱門,其根本原因還是在于Java具有"讓Internet動起來"的能...
      6.3 Java Applet

        前面的章節我們闡述了Application的應用,這一講我們將介紹java的另一類應用java Applet,即java小應用程序。

        在Java問世的頭幾年里,之所以如此熱門,其根本原因還是在于Java具有"讓Internet動起來"的能力。具體地說,就是Java能創建一種特殊類型的程序(通常稱作"小應用程序"或者Applet),具備Java能力的Web瀏覽器可從網上下載這種程序,然后運行。

        目前,幾乎所有瀏覽器均支持動態HTML(DHTML)和腳本編制(支持XML的瀏覽器也有很多),所以比起Java剛剛問世的時候,瀏覽器能夠做的事情要多得多。但盡管如此,由于小應用程序是用一種全功能的程序設計語言編制的,所以同HTML、XML和腳本語言的任何一種可能的組合相比,它仍然具有應用前景!

        6.3.1 Applet 介紹(1)

        Applet就是使用Java語言編寫的一段代碼,它可以在瀏覽器環境中運行。它與Application的區別主要在于其執行方式的不同。application 是從其中的main() 方法開始運行的,而Applet 是在瀏覽器中運行的,必須創建一個HTML 文件,通過編寫HTML 語言代碼告訴瀏覽器載入何種Applet 以及如何運行。

        例6.7 HelloWorld.java 源程序:
        import java.awt.Graphics; //引入圖形類Graphics
        import java.applet.Applet; //引入Applet類

        public class HelloWorld extends Applet {
            String hw_text ;
            public void init () { //init()方法是Applet首先執行的方法
            hw_text = "Hello World";
            }


            public void paint(Graphics g) {
            g.drawString (hw_text , 25, 25) ;
               //在坐標為(25,25)的地方顯示字符串hw_text


            }
        }

        Applet程序編寫完后,首先要用java編譯器編譯成為字節碼文件,然后編寫相應的HTML文件才能夠正常執行,例如為運行上面的Applet程序所編寫的HTML文件HelloWorld.html如下:

        
        
        
        

        6.3.1 Applet 介紹(2)

        2.Applet的 安全性

        "沙箱"機制:Java虛擬機為Applet提供能夠良好運行的沙箱,一旦它們試圖離開沙箱則會被禁止。

        由于小應用程序是通過網絡傳遞的,這就不可避免地使人想到會發生安全問題。例如有人編寫惡意程序通過小應用程序讀取用戶密碼并散播到網絡上,這將會是一件非?膳碌氖虑。所以,必須對小應用程序進行限制。

        瀏覽器禁止Applet執行下列操作:
        (1)在運行時調用其它程序。
        (2)文件讀寫操作。
        (3)裝載動態連接庫和調用任何本地方法。
        (4)試圖打開一個socket進行網絡通信,但是所連接的主機并不是提供Applet的主機。

        ◇ Applet的類層次:

        

        ◇ Applet的生命周期

        小應用程序的生命周期相對于Application而言較為復雜。在其生命周期中涉及到Applet類的四個方法(也被JApplet類繼承):init()、start()、stop()和destroy()。下面首先用圖來表示一個小應用程序的生命周期,然后再簡要描述這四個方法。 看圖

        Applet的生命周期中有四個狀態:初始態、運行態、停止態和消亡態。當程序執行完init()方法以后,Applet程序就進入了初始態;然后馬上執行start()方法,Applet程序進入運行態;當Applet程序所在的瀏覽器圖標化或者是轉入其它頁面時,該Applet程序馬上執行stop()方法,Applet程序進入停止態;在停止態中,如果瀏覽器又重新裝載該Applet程序所在的頁面,或者是瀏覽器從圖標中復原,則Applet程序馬上調用start()方法,進入運行態;當然,在停止態時,如果瀏覽器關閉,則Applet程序調用destroy()方法,進入消亡態。

        ◇ Applet的主要方法:

        1. init( )
        創建Applet時執行,只執行一次
        當小應用程序第一次被支持Java的瀏覽器加載時,便執行該方法。在小應用程序的生命周期中,只執行一次該方法,因此可以在其中進行一些只執行一次的初始化操作,如處理由瀏覽器傳遞進來的參數、添加用戶接口組件、加載圖像和聲音文件等。
        小應用程序有默認的構造方法,但它習慣于在init()方法中執行所有的初始化,而不是在默認的構造方法內。

        2.start( )
        多次執行,當瀏覽器從圖標恢復成窗口,或者是返回該主頁時執行。
        系統在調用完init()方法之后,將自動調用start()方法。而且每當瀏覽器從圖標恢復為窗口時,或者用戶離開包含該小應用程序的主頁后又再返回時,系統都會再執行一遍start()方法。start()方法在小應用程序的生命周期中被調用多次,以啟動小應用程序的執行,這一點與init()方法不同。該方法是小應用程序的主體,在其中可以執行一些需要重復執行的任務或者重新激活一個線程,例如開始動畫或播放聲音等。

        3.stop( )
        多次執行,當瀏覽器變成圖標時,或者是離開主頁時執行,主要功能是停止一些耗用系統資源的工作,。
        與start()相反,當用戶離開小應用程序所在頁面或瀏覽器變成圖標時,會自動調用stop()方法。因此,該方法在生命周期中也被多次調用。這樣使得可以在用戶并不注意小應用程序的時候,停止一些耗用系統資源的工作(如中斷一個線程),以免影響系統的運行速度,且并不需要去人為地去調用該方法。如果你的小應用程序中不包含動畫、聲音等程序,通常也不必重載該方法。

        4.destroy( )
        用來釋放資源,在stop( )之后執行
        瀏覽器正常關閉時,Java自動調用這個方法。destroy()方法用于回收任何一個與系統無關的內存資源。當然,如果這個小應用程序仍然處于活動狀態,Java會在調用destroy()之前,調用stop()方法。

        下面的例子使用了小應用程序生命周期中的這幾個方法。
        例6.8
        import java.awt.Graphics;
        import java.applet.Applet;
        public class HWloop extends Applet {
           AudioClip sound; //聲音片斷對象
           public void init( ){
              sound=getAudioClip("audio/hello.au"); //獲得聲音片斷
           }
           public void paint(Graphics g) {
              g.drawString("hello Audio",25,25); //顯示字符串
           }


        public void start( )
           {
              sound.loop( ); //聲音片斷開始播放
           }
        public void stop( )
           {
              sound.stop( ); //聲音片斷停止
              }
        }

        在本例子中,Applet開始執行后就不停的播放聲音,如果瀏覽器圖標化或者是轉到其它頁面,則聲音停止播放;如果瀏覽器恢復正;蛘呤菑钠渌撁嫣兀瑒t程序繼續播放聲音。

        由于Applet程序要嵌入到HTML文件中才能夠正常執行,下面介紹與Applet程序有關的HTML文件標記。

        
        [archive=archiveList] //同一個codebase中需預先下載的文件
        code=appletFile.class //applet的名稱
        width=pixels height=pixels //applet的初始顯示空間
        [codebase=codebaseURL] //代碼的地址
        [alt=alternateText] //如果瀏覽器不支持applet時,顯示的替代文本
        [name=appletInstanceName]
                 //給該applet取名,用于同頁面applet之間的通信
        [align=alignment] //對齊方式,如left,right,top,baseline...
        [vspace=pixels] [hspace=pixels] //預留的邊緣空白
        >
        []
        []
        …… //參數名稱及其值
        [alternateHTML]
        


        注意:
        1)不支持Java的瀏覽器會把之間的普通HTML文檔顯示出來;支持Java的瀏覽器,則把其中的普通HTML文檔忽略。
        2)AppletViewer僅支持標記,其它標記不會被顯示出來。

        經過精心設計,可以使java程序同時是Applet與Application,如下例所示:

        例6.9
         import java.awt.*;
         import java.awt.event.*;
         public class AppletApp extends Applet {
            public void main(String args[]) {
              Frame frame=new Frame("Application"); //構造一個Frame
              AppletApp app=new AppletApp();
              frame.add("Center",app);
              frame.setSize(200,200); //改變Frame的尺寸

         frame.validate();
         frame.setVisible(true); //使Frame可見
         frame.addWindwoListener(new WindowControl(app));
                          //給Frame加入監聽器
         app.init(); //初始化Applet
         app.start(); //運行該Applet
         }
            public void paint(Graphics g) { //重畫方法
              g.drawString("hello world",25,25);
            }
            public void destroy(){
              System.exit(0);
            }
         }

         class WindowControl extends WindowAdapter { //監聽器類
            Applet c;
            public WindowControl(Applet c) { //構造函數
              this.c=c;
            }
            public void windowClosing(WindowEvent e) {
                         //關閉窗口時調用的方法
              c.destroy( );
            }
         }

        6.3.2 Applet的AWT繪制

         看圖

        Applet程序中所采用的AWT的繪圖機制主要涉及三個方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一個Graphics類參數。Graphics是畫圖的關鍵,它可以支持兩種繪圖:一種是基本的繪圖,如:畫線、矩形、圓等;另一種是畫圖象,主要用于動畫制作。

        要進行繪圖,首先要找到一個Graphics類的對象。update()方法和paint()方法所傳遞的參數都是Graphics類的對象,因此主要是通過重載它們來進行繪圖,這是在動畫程序中經常使用的方法。我們還可以通過getGraphics()方法得到一個Graphics類的對象,這個對象和update()方法和paint()方法中所傳遞的對象一樣,都是該成員所對應的Graphics類的對象。得到了Graphics類的對象,就可使用各種繪圖方法。

        Graphics中提供的圖形繪制方法有:
        paint( ) //進行繪圖的具體操作,必須有程序員重寫
        update( ) //用于更新圖形,先清除背景、前景,再調用paint()
        repaint( ) /*用于重繪圖形,在組件外形發生變化,即大小改變或位置移動時,repaint( )方法立即被系統自動調用,而實際上repaint()方法是自動調用update()方法*/

        下面的方法支持基本的繪圖和畫圖像:
        void drawLine( )
        void drawArc( )
        void drawPolygon( )
        void drawRect( )
        void drawRoundRect( )
        void fill3DRect( )
        void fillOval( )
        java.awt.Graphics類
        
        輸出文字:
        void drawBytes( )
        void drawChars( )
        void drawString( )



      日韩精品一区二区三区高清