<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    因?yàn)榭诳剩系蹌?chuàng)造了水;
    因?yàn)楹诎担系蹌?chuàng)造了火;
    因?yàn)槲倚枰笥眩陨系圩屇銇?lái)到我身邊
    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

    〖總在尋夢(mèng) 所以苦痛〗

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    Hibernate在線

    Java友情

    Java認(rèn)證

    linux經(jīng)典

    OA系統(tǒng)

    Spring在線

    Structs在線

    專家專欄

    企業(yè)信息化

    大型設(shè)備共享系統(tǒng)

    工作流

    工作流產(chǎn)品

    網(wǎng)上購(gòu)書(shū)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

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

      (一) Applet程序開(kāi)發(fā)步驟
      Applet程序開(kāi)發(fā)主要步驟如下:
      1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程序。
      2)把Applet的源程序轉(zhuǎn)換為字節(jié)碼文件。
      3)編制使用class 的HTML文件。在HTML文件內(nèi)放入必要的<APPLET>語(yǔ)句。
      下面舉一個(gè)最簡(jiǎn)單的HelloWorld 例子來(lái)說(shuō)明Applet程序的開(kāi)發(fā)過(guò)程:
      (1) 編輯Applet 的java源文件
      創(chuàng)建文件夾C:\ghq,在該文件夾下建立 HelloWorld.java
      文件的源代碼如下:      

    import java.awt.*;
    import java.applet.*;
    public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程序的特點(diǎn)
    {
     
    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>

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

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

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

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

      可以看出,該命令啟動(dòng)了appletviewer并指明了HTML文件,該HTML文件中包含對(duì)應(yīng)于HelloWorld 的<APPLET>語(yǔ)句。
      如果用瀏覽器運(yùn)行HelloWorld Applet,需在瀏覽器的地址欄中輸入HTML文件URL地址。
      至此,一個(gè)Applet程序的開(kāi)發(fā)運(yùn)行整個(gè)過(guò)程結(jié)束了(包括java源文件、編譯的class文件、html文件以及用appletviewer或用瀏覽器運(yùn)行)。

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

    public final void setStub(AppletStub stub)
    //設(shè)置Applet的stub.stub是Java和C之間轉(zhuǎn)換參數(shù)并返回值的代碼位,它是由系統(tǒng)自動(dòng)設(shè)定的。
    public boolean isActive();// 判斷一個(gè)Applet是否處于活動(dòng)狀態(tài)。
    public URL getDocumentBase();// 檢索表示該Applet運(yùn)行的文件目錄的對(duì)象。
    public URL getCodeBase();// 獲取該Applet 代碼的URL地址。
    public String getParameter(String name);// 獲取該Applet 由name指定參數(shù)的值。
    public AppletContext getAppletContext();// 返回瀏覽器或小應(yīng)用程序觀察器。
    public void resize(int width,int height);// 調(diào)整Applet運(yùn)行的窗口尺寸。
    public void resize(Dimension d);// 調(diào)整Applet運(yùn)行的窗口尺寸。
    public void showStatus(String msg);// 在瀏覽器的狀態(tài)條中顯示指定的信息。
    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應(yīng)用有關(guān)的作者、版本和版權(quán)方面的信息;
    public String[][] getParameterInfo();
    // 返回描述Applet參數(shù)的字符串?dāng)?shù)組,該數(shù)組通常包含三個(gè)字符串: 參數(shù)名、該參數(shù)所需值的類型和該參數(shù)的說(shuō)明。
    public void play(URL url);// 加載并播放一個(gè)url指定的音頻剪輯。
    public void destroy();//撤消Applet及其所占用的資源。若該Applet是活動(dòng)的,則先終止該Applet的運(yùn)行。

      (1) Applet運(yùn)行狀態(tài)控制基本方法
      Applet類中的四種基本方法用來(lái)控制其運(yùn)行狀態(tài):init()、start()、stop()、destroy()
      init()方法
      這個(gè)方法主要是為Applet的正常運(yùn)行做一些初始化工作。當(dāng)一個(gè)Applet被系統(tǒng)調(diào)用時(shí),系統(tǒng)首先調(diào)用的就是該方法。通常可以在該方法中完成從網(wǎng)頁(yè)向Applet傳遞參數(shù),添加用戶界面的基本組件等操作。
      start()方法
      系統(tǒng)在調(diào)用完init()方法之后,將自動(dòng)調(diào)用start()方法。而且,每當(dāng)用戶離開(kāi)包含該Applet的主頁(yè)后又再返回時(shí),系統(tǒng)又會(huì)再執(zhí)行一遍start()方法。這就意味著start()方法可以被多次執(zhí)行,而不像init()方法。因此,可把只希望執(zhí)行一遍的代碼放在init()方法中。可以在start()方法中開(kāi)始一個(gè)線程,如繼續(xù)一個(gè)動(dòng)畫(huà)、聲音等。
      stop()方法
      這個(gè)方法在用戶離開(kāi)Applet所在頁(yè)面時(shí)執(zhí)行,因此,它也是可以被多次執(zhí)行的。它使你可以在用戶并不注意Applet的時(shí)候,停止一些耗用系統(tǒng)資源的工作以免影響系統(tǒng)的運(yùn)行速度,且并不需要人為地去調(diào)用該方法。如果Applet中不包含動(dòng)畫(huà)、聲音等程序,通常也不必實(shí)現(xiàn)該方法。
      destroy()方法
      與對(duì)象的finalize()方法不同,Java在瀏覽器關(guān)閉的時(shí)候才調(diào)用該方法。Applet是嵌在HTML文件中的,所以destroty()方法不關(guān)心何時(shí)Applet被關(guān)閉,它在瀏覽器關(guān)閉的時(shí)候自動(dòng)執(zhí)行。在destroy()方法中一般可以要求收回占用的非內(nèi)存獨(dú)立資源。(如果在Applet仍在運(yùn)行時(shí)瀏覽器被關(guān)閉,系統(tǒng)將先執(zhí)行stop()方法,再執(zhí)行destroy()方法。
    下面一個(gè)程序可以更好的幫助我們理解Java Applet在整個(gè)生命周期是如何調(diào)用上面我們介紹的幾個(gè)方法的。
      文件名: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應(yīng)用的有關(guān)參數(shù)說(shuō)明
      利用Applet來(lái)接收從HTML中傳遞過(guò)來(lái)的參數(shù),下面對(duì)這些參數(shù)作一簡(jiǎn)單說(shuō)明:
      * CODE標(biāo)志
      CODE標(biāo)志指定Applet的類名;WIDTH和HEIGHT標(biāo)志指定Applet窗口的像素尺寸。在APPLET語(yǔ)句里還可使用其他一些標(biāo)志。
      * CODEBASE 標(biāo)志
      CODEBASE標(biāo)志指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對(duì)地址 ,如www.sun.com。也可以是相對(duì)于當(dāng)前HTML所在目錄的相對(duì)地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 標(biāo)志,瀏覽器將使用和HTML文件相同的URL。
      * ALT 標(biāo)志
      雖然Java在WWW上很受歡迎,但并非所有瀏覽器都對(duì)其提供支持。如果某瀏覽器無(wú)法運(yùn)行Java Applet,那么它在遇到APPLET語(yǔ)句時(shí)將顯示ALT標(biāo)志指定的文本信息。
      * ALIGN 標(biāo)志
      ALIGN標(biāo)志可用來(lái)控制把Applet窗口顯示在HTML文檔窗口的什么位置。與HTML<LMG>語(yǔ)句一樣,ALIGN標(biāo)志指定的值可以是TOP、MIDDLE或BOTTOM。
      * VSPACE與HSPACE 標(biāo)志
      VSPACE和HSPACE標(biāo)志指定瀏覽器顯示在Applet窗口周?chē)乃胶拓Q直空白條的尺寸,單位為像素。如下例使用該標(biāo)志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:
      * NAME 標(biāo)志
      NAME標(biāo)志把指定的名字賦予Applet的當(dāng)前實(shí)例。當(dāng)瀏覽器同時(shí)運(yùn)行兩個(gè)或多個(gè)Applet時(shí),各Applet可通過(guò)名字相互引用或交換信息。如果忽略NAME標(biāo)志,Applet的名字將對(duì)應(yīng)于其類名。
      * PARAM 標(biāo)志
      通用性是程序設(shè)計(jì)所追求的目標(biāo)之一。使用戶或者程序員能很方便地使用同一個(gè)Applet完成不同的任務(wù)是通用性的具體表現(xiàn)。從HTML文件獲取信息是提高Applet通用性的一條有效途徑。
      假設(shè)編制了一個(gè)把某公司的名字在屏幕上卷動(dòng)的Applet。為了使該Applet更加通用,則可以使該Applet從HTML文件獲取需要卷動(dòng)的文本信息。這樣,若想顯示另一個(gè)公司的名字,用不著修改Java Applet本身,只需修改HTML文件即可。
      PARAM 標(biāo)志可用來(lái)在HTML文件里指定參數(shù),格式如下所示:
    PARAM Name="name" Value="Liter"
      Java Applet可調(diào)用getParameter方法獲取HTML文件里設(shè)置的參數(shù)值。
    然而,JDK并不是可視化的RAD(rapid application development)開(kāi)發(fā)工具,對(duì)于對(duì)象的使用不能如Delphi那樣只需要拖拉,移位就可以,而需要我們寫(xiě)調(diào)用代碼.這就產(chǎn)生了一個(gè)麻煩,我怎么樣才能夠讓元素按我的要求在界面中擺放呢?在元素不多時(shí)可以讓Java自動(dòng)布局(Layout),但是元素很多時(shí),或者需要根據(jù)應(yīng)用程序的要求來(lái)擺放元素時(shí),就需要使用面板了(Panel).面板在Delphi里也有相應(yīng)的組件(TPanel),但主要是用來(lái)對(duì)界面分割,進(jìn)行粗略的布局的,精確的定位還需要開(kāi)發(fā)人員手動(dòng)調(diào)節(jié).而Java則只能用Panel來(lái)定位,不能不說(shuō)是個(gè)缺陷.也許是我還沒(méi)學(xué)到吧。

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

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

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲中文字幕久久精品无码2021| 亚洲日本久久一区二区va| 日韩精品人妻系列无码专区免费| 激情内射亚洲一区二区三区| 爽爽日本在线视频免费| 精品人妻系列无码人妻免费视频| 亚洲第一页中文字幕| 国产青草视频在线观看免费影院| 中国毛片免费观看| 香蕉大伊亚洲人在线观看| 亚洲欧洲日产国码一级毛片| 在线视频精品免费| 一本一道dvd在线观看免费视频| 亚洲精品欧洲精品| 亚洲国产一区视频| 99视频全部免费精品全部四虎| 免费视频精品一区二区| 亚洲电影免费观看| 久久激情亚洲精品无码?V| 和日本免费不卡在线v| 在线看片免费人成视频久网下载| 亚洲欧美国产国产综合一区| 亚洲av日韩av高潮潮喷无码| 免费在线不卡视频| 国产精品无码免费播放| 无码人妻丰满熟妇区免费| 亚洲.国产.欧美一区二区三区| 亚洲精品在线视频| 57pao国产成永久免费视频| 亚洲a∨无码一区二区| 亚洲国产老鸭窝一区二区三区| 免费无码一区二区三区蜜桃大| 春暖花开亚洲性无区一区二区 | 中文字幕无码不卡免费视频| 美女尿口扒开图片免费| 亚洲一区综合在线播放| 亚洲国产人成中文幕一级二级| 麻豆高清免费国产一区| 国产精品午夜免费观看网站| 亚洲精品一卡2卡3卡四卡乱码| 亚洲日韩精品射精日|