隨筆 - 71  文章 - 15  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          因為口渴,上帝創造了水;
          因為黑暗,上帝創造了火;
          因為我需要朋友,所以上帝讓你來到我身邊
          Click for Shaanxi xi'an, Shaanxi Forecast
          ╱◥█◣
            |田|田|
          ╬╬╬╬╬╬╬╬╬╬╬
          If only I have such a house!
          〖總在爬山 所以艱辛〗
          Email:myesjoy@yahoo.com.cn
          NickName:yesjoy
          MSN:myesjoy@hotmail.com
          QQ:150230516

          〖總在尋夢 所以苦痛〗

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Hibernate在線

          Java友情

          Java認證

          linux經典

          OA系統

          Spring在線

          Structs在線

          專家專欄

          企業信息化

          大型設備共享系統

          工作流

          工作流產品

          網上購書

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Java Applet 是用Java 語言編寫的一些小應用程序,這些程序是直接嵌入到頁面中,由支持Java的瀏覽器(IE 或 Nescape)解釋執行能夠產生特殊效果的程序。它可以大大提高Web頁面的交互能力和動態執行能力。包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支持的網頁。
            當用戶訪問這樣的網頁時,Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網絡瀏覽器。由于Applet是在用戶的計算機上執行的,所以它的執行速度不受網絡帶寬或者Modem存取速度的限制,用戶可以更好地欣賞網頁上Applet產生的多媒體效果。
            Applet 小應用程序的實現主要依靠java.applet 包中的Applet類。與一般的應用程序不同,Applet應用程序必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得參數,并和Web頁面進行交互。
            含有Applet的網頁的HTML文件代碼中必須帶有<applet>和</applet>這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小程序代碼并在本地計算機上執行該Applet小程序。
            Applet是一種Java的小程序,它通過使用該Applet的HTML文件,由支持Java的網頁瀏覽器下載運行。也可以通過java開發工具的appletviewer來運行。Applet 程序離不開使用它的HTML文件。這個HTML文件中關于Applet的信息至少應包含以下三點:
            1)字節碼文件名(編譯后的Java文件,以.class為后綴)
            2)字節碼文件的地址
            3)在網頁上顯示Applet的方式。
            一個HTML文件增加Applet有關的內容只是使網頁更加富有生氣,如添加聲音、動畫等這些吸引人的特征,它并不會改變HTML文件中與Applet無關的元素。

            (一) Applet程序開發步驟
            Applet程序開發主要步驟如下:
            1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程序。
            2)把Applet的源程序轉換為字節碼文件。
            3)編制使用class 的HTML文件。在HTML文件內放入必要的<APPLET>語句。
            下面舉一個最簡單的HelloWorld 例子來說明Applet程序的開發過程:
            (1) 編輯Applet 的java源文件
            創建文件夾C:\ghq,在該文件夾下建立 HelloWorld.java
            文件的源代碼如下:      

          import java.awt.*;
          import java.applet.*;
          public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程序的特點
          {
           
          public void paint(Graphics g )
           {
            g.drawString(
          "Hello World!",5,35);
           }
          }


            保存上述程序在C:\ghq\HelloWorld.java文件里。
            (2)編譯Applet
            編譯HelloWorld.java源文件可使用如下JDK命令:

          C:\ghq\>javac HelloWorld.java<Enter>

            注意:如果編寫的源程序違反了Java編程語言的語法規則,Java編譯器將在屏幕上顯示語法錯誤提示信息。源文件中必須不含任何語法錯誤,Java編譯器才能成功地把源程序轉換為appletviewer和瀏覽器能夠執行的字節碼程序。
            成功地編譯Java applet之后生成響應的字節碼文件HelloWorld.class的文件。用資源管理器或DIR命令列出目錄列表,將會發現目錄C:\ghq中多了一個名為HelloWorld.class的文件。
            (3)創建HTML文件
            在運行創建的HelloWorld.class 之前,還需創建一個HTML文件,appletviewer或瀏覽器將通過該文件訪問創建的Applet。為運行HelloWorld.class, 需要創建包含如下HTML語句的名為HelloWorld.html的文件。

          <HTML>
          <TITLE>HelloWorld! Applet</TITLE>
          <APPLET
          CODE="HelloWorld.class"
          WIDTH
          =200
          HEIGHT=100>
          </APPLET>
          </HTML> 

            本例中,<APPLET>語句指明該Applet字節碼類文件名和以像素為單位的窗口的尺寸。雖然這里HTML文件使用的文件名為HelloWorld.HTML,它對應于HelloWorld.java的名字,但這種對應關系不是必須的,可以用其他的任何名字(比如說Ghq.HTML)命名該HTML文件。但是使文件名保持一種對應關系可給文件的管理帶來方便。
            (4)執行 HelloWorld.html
            如果用appletviewer運行HelloWorld.html,需輸入如下的命令行:

          C:\ghq\>appletviewer JavaWorld.html<ENTER>

            可以看出,該命令啟動了appletviewer并指明了HTML文件,該HTML文件中包含對應于HelloWorld 的<APPLET>語句。
            如果用瀏覽器運行HelloWorld Applet,需在瀏覽器的地址欄中輸入HTML文件URL地址。
            至此,一個Applet程序的開發運行整個過程結束了(包括java源文件、編譯的class文件、html文件以及用appletviewer或用瀏覽器運行)。

            (二) Applet類
            Applet類是所有Applet應用的基類,所有的Java小應用程序都必須繼承該類。如下所示。
            Applet類的構造函數只有一種,即:public Applet()
            Applet實現了很多基本的方法,下面列出了Applet類中常用方法和用途。

          public final void setStub(AppletStub stub)
          //設置Applet的stub.stub是Java和C之間轉換參數并返回值的代碼位,它是由系統自動設定的。
          public boolean isActive();// 判斷一個Applet是否處于活動狀態。
          public URL getDocumentBase();// 檢索表示該Applet運行的文件目錄的對象。
          public URL getCodeBase();// 獲取該Applet 代碼的URL地址。
          public String getParameter(String name);// 獲取該Applet 由name指定參數的值。
          public AppletContext getAppletContext();// 返回瀏覽器或小應用程序觀察器。
          public void resize(int width,int height);// 調整Applet運行的窗口尺寸。
          public void resize(Dimension d);// 調整Applet運行的窗口尺寸。
          public void showStatus(String msg);// 在瀏覽器的狀態條中顯示指定的信息。
          public Image getImage(URL url); // 按url指定的地址裝入圖象。
          public Image getImage(URL url,String name);// 按url指定的地址和文件名加載圖像。
          public AudioClip getAudioClip(URL url);// 按url指定的地址獲取聲音文件。
          public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和文件名獲取聲音。
          public String getAppletInfo();// 返回Applet應用有關的作者、版本和版權方面的信息;
          public String[][] getParameterInfo();
          // 返回描述Applet參數的字符串數組,該數組通常包含三個字符串: 參數名、該參數所需值的類型和該參數的說明。
          public void play(URL url);// 加載并播放一個url指定的音頻剪輯。
          public void destroy();//撤消Applet及其所占用的資源。若該Applet是活動的,則先終止該Applet的運行。

            (1) Applet運行狀態控制基本方法
            Applet類中的四種基本方法用來控制其運行狀態:init()、start()、stop()、destroy()
            init()方法
            這個方法主要是為Applet的正常運行做一些初始化工作。當一個Applet被系統調用時,系統首先調用的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞參數,添加用戶界面的基本組件等操作。
            start()方法
            系統在調用完init()方法之后,將自動調用start()方法。而且,每當用戶離開包含該Applet的主頁后又再返回時,系統又會再執行一遍start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的代碼放在init()方法中。可以在start()方法中開始一個線程,如繼續一個動畫、聲音等。
            stop()方法
            這個方法在用戶離開Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在用戶并不注意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運行速度,且并不需要人為地去調用該方法。如果Applet中不包含動畫、聲音等程序,通常也不必實現該方法。
            destroy()方法
            與對象的finalize()方法不同,Java在瀏覽器關閉的時候才調用該方法。Applet是嵌在HTML文件中的,所以destroty()方法不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回占用的非內存獨立資源。(如果在Applet仍在運行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。
          下面一個程序可以更好的幫助我們理解Java Applet在整個生命周期是如何調用上面我們介紹的幾個方法的。
            文件名:StartStop.java

          import java.awt.*;
          import java.applet.*;
          public class StartStop extends Applet
          {
            StringBuffer message;
            
          public void init()
            {
              message
          =new StringBuffer("Init done");
            }  
            
          public void start()
            {
              message.append(
          "Started");
            }
            
          public void stop()
            {
              message.append(
          "Stopped");
            }
            
          public void paint(Graphics g)
            {
              g.drawString(message.toString(),
          50,50);
            }
          }

                文件名:StartStop.html
          <HTML>
          <TITLE>test process Applet</TITLE>
          <body>
          Here comes my process applet:
          <br>
          <APPLET
          CODE="StartStop.class"
          WIDTH
          =400
          HEIGHT=100>
          </APPLET>
          </body>
          </HTML>

            (2) Applet應用的有關參數說明
            利用Applet來接收從HTML中傳遞過來的參數,下面對這些參數作一簡單說明:
            * CODE標志
            CODE標志指定Applet的類名;WIDTH和HEIGHT標志指定Applet窗口的像素尺寸。在APPLET語句里還可使用其他一些標志。
            * CODEBASE 標志
            CODEBASE標志指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對地址 ,如www.sun.com。也可以是相對于當前HTML所在目錄的相對地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 標志,瀏覽器將使用和HTML文件相同的URL。
            * ALT 標志
            雖然Java在WWW上很受歡迎,但并非所有瀏覽器都對其提供支持。如果某瀏覽器無法運行Java Applet,那么它在遇到APPLET語句時將顯示ALT標志指定的文本信息。
            * ALIGN 標志
            ALIGN標志可用來控制把Applet窗口顯示在HTML文檔窗口的什么位置。與HTML<LMG>語句一樣,ALIGN標志指定的值可以是TOP、MIDDLE或BOTTOM。
            * VSPACE與HSPACE 標志
            VSPACE和HSPACE標志指定瀏覽器顯示在Applet窗口周圍的水平和豎直空白條的尺寸,單位為像素。如下例使用該標志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:
            * NAME 標志
            NAME標志把指定的名字賦予Applet的當前實例。當瀏覽器同時運行兩個或多個Applet時,各Applet可通過名字相互引用或交換信息。如果忽略NAME標志,Applet的名字將對應于其類名。
            * PARAM 標志
            通用性是程序設計所追求的目標之一。使用戶或者程序員能很方便地使用同一個Applet完成不同的任務是通用性的具體表現。從HTML文件獲取信息是提高Applet通用性的一條有效途徑。
            假設編制了一個把某公司的名字在屏幕上卷動的Applet。為了使該Applet更加通用,則可以使該Applet從HTML文件獲取需要卷動的文本信息。這樣,若想顯示另一個公司的名字,用不著修改Java Applet本身,只需修改HTML文件即可。
            PARAM 標志可用來在HTML文件里指定參數,格式如下所示:
          PARAM Name="name" Value="Liter"
            Java Applet可調用getParameter方法獲取HTML文件里設置的參數值。
          然而,JDK并不是可視化的RAD(rapid application development)開發工具,對于對象的使用不能如Delphi那樣只需要拖拉,移位就可以,而需要我們寫調用代碼.這就產生了一個麻煩,我怎么樣才能夠讓元素按我的要求在界面中擺放呢?在元素不多時可以讓Java自動布局(Layout),但是元素很多時,或者需要根據應用程序的要求來擺放元素時,就需要使用面板了(Panel).面板在Delphi里也有相應的組件(TPanel),但主要是用來對界面分割,進行粗略的布局的,精確的定位還需要開發人員手動調節.而Java則只能用Panel來定位,不能不說是個缺陷.也許是我還沒學到吧。

            入門之后,就該深入到對象的概念了。
            假設在Java中創建了一個叫做Date的自定義數據類型如下
           public class Date{
              int day;
              int month;
              int year;
            }
           那么對于以下三條聲名變量的語句,java在為其分配內存的時候有什么不同嗎? 
           (1) int i;
            (2) Date mybirth;
            (3) Date mybirth=new Date();
            很顯然是有的,分配情況如下:
            (1)Java自動為整數i分配整形變量的內存,一般是兩個字節
            (2)Java聲明了一個Date類的實例變量mybirth,并為其分配了存儲空間,但這個存儲空間里面存儲的只是一個引用,或者說是一個地址,目前的地址里面什么都沒有,那么我們就還不能使用這個實例變量,不能引用它的成員。
            (3)Java創建了一個Date類的實例變量mybirth,并為其成員變量分配了足夠的存儲空間,最后返回對這個存儲空間的一個引用,也就是返回這個存儲空間的首地址,以后就通過mybirth,即這個首地址來訪問這個實例變量里面的各個成員,如mybirth.day,mybirth.month,mybirth.year。
            當我們聲明一個基本數據類型的變量(如boolean, byte, short, char, int,long,flat,double)時,系統會自動為變量分配內存。但是如果聲明了String或者用戶自定義的變量時,系統不會立即為其分配內存.為什么會這樣呢?
            這是因為,String和用戶自定義的變量都屬于類的范疇.一個被聲明為類的變量,已經不再是一個數據了,而變成對數據的一個引用,就是說mybirth可以看作是一個指向類的一個實例的指針,里面存放的是地址.這樣的話就好理解了。
            深入一點,既然類的實例變量值是指針,這個指針指向一個類的實例,那么我們顯然可以定義多個名稱不同的類的實例變量,而將它們全都指向一個實例。比如:
             University u=new University();//定義了一個類University的實例變量u,并為其分配對象的存儲空間
            University u2=u;//又定義了一個實例變量u2,將u的值賦給u2
            那么顯然u2和u除了名稱不同外,其實是一回事,因為它們指向相同一個地址.
            我覺得弄清楚這一點還是很重要的。這些數據結構的東西,是一個程序員需要知道的所以然.

          posted on 2006-02-08 21:32 ★yesjoy★ 閱讀(558) 評論(0)  編輯  收藏 所屬分類: java.applet包

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 郑州市| 沙雅县| 伽师县| 建昌县| 高陵县| 绥化市| 武城县| 盱眙县| 满城县| 神农架林区| 乌拉特前旗| 阿克陶县| 阳春市| 靖安县| 白水县| 仙居县| 凤庆县| 霍林郭勒市| 晋宁县| 苗栗市| 大石桥市| 汝南县| 大兴区| 遂昌县| 岳池县| 霍州市| 辽宁省| 孟津县| 中方县| 祁阳县| 武功县| 萨嘎县| 斗六市| 榕江县| 康马县| 博爱县| 新巴尔虎右旗| 桐庐县| 壶关县| 昭觉县| 唐河县|