技巧:JavaScript與JavaApplet綜合運用

來源:互聯網
上載者:User
javascript|技巧  

在WWW中Java因其靈活性而得到越來越廣泛的運用,許多的網頁都使用了Java來增加動感和與使用者進行互動對話.在WWW中Java Script和Java Applet是運用最多的。Java Script的啟動速度快, 編寫簡單,易於修改,與文檔的結合密切,但其功能略嫌簡單; 而Java Applet的功能強大, 靈活性好,但編寫複雜,無法直接在文檔中修改.因此如能將二者結合運用將達到很好的效果.

下面給大家舉例如何在網頁中進行Java Script和Java Applet的綜合運用.

Java Script與Java Applet的綜合運用(一)

首先我們編寫一個Java Applet,就叫HelloWorld1好了(大家對HelloWorld一定不會陌生).

HelloWorld1.java

import java.awt.*; import java.applet.*; public class HelloWorld1 extends Applet { public String text="Hello World!";//請注意此處的public public void paint(Graphics g) {g.drawString(text,20,20);} }

編譯通過後會產生HelloWorld1.class(別告訴我程式無法通過!如果編譯出錯請檢查是否拼字有誤。)

example.html

<html> <head><title>例子</title></head> <body> <script language="JavaScript"> <!-- function SetText() { document.app.text="世界你好!"; document.app.repaint();//也請注意此句. } //--> </script> Java Script與Java Applet的綜合運用例一<br> <applet code="HelloWorld1.class" width="100" height="28" name="app"> </applet> <form> <input type="button" value="請點擊這裡" > </form> </body> </html>

用瀏覽器開啟example.html會出現一個顯示“Hello World!”的Java Applet以及一個按鈕“請點擊這裡”。我們點一下按鈕,你會發現“Hello World!”變成了“世界你好”。這說明Java Script已經成功的改變了HelloWorld1中text的內容。

你也許會問在在HelloWorld1.java中為什麼要在text前加public??

還有Java Script中那行:"document.app.repaint();"是什麼意思??

是這樣的:

和C++一樣,在Java中預設狀態下,對象的屬性是private,要讓Java Script訪問到Java Applet中的對象,必須設定為public(包括函數、變數和類)。

前一句document.app.text="世界你好!"僅改變了text的值,要使它反映在瀏覽器上,必須要讓HelloWorld1重新整理它的顯示,因此要調用HelloWorld1中的repaint()函數。你也許又要問了:我在HelloWorld1.java中並沒有看到repaint()函數呀? HelloWorld1是Applet的子類,我們調用repaint()其實是調用類Applet中的repaint()函數。當然我們並不推薦在外部直接修改Applet內的變數,更安全的方法是提供public函數來讀取和改變內部變數。

Java Script與Java Applet的綜合運用(二)

上次我們介紹了使用Java Script改變Java Applet中的變數的方法(嚴格來講應該是改變了String類,不過可以簡單的把String類看成是變數); 我們說直接在Java Script中改變Java Applet中的變數是不可取的(至少是不推薦的)。 因為Java Applet本身並不知道變數被改變, 這會給Applet程式帶來隱患(還記得我們不得不調用repaint()函數來重新整理顯示嗎?)。 更為積極的做法是在Java Applet中提供public函數支援對內部對象的存取。下面我們對HelloWorld1.java和example.html進行改進,介紹如何在Java Script中調用Java Applet的函數:

考慮到瀏覽器對同名的Java Applet往往使用cache,因此我們把程式命名為HelloWorld2.java

HelloWorld2.java

import java.awt.*; import java.applet.*; public class HelloWorld2 extends Applet//主類名必須與檔案名稱相同 { String text="Hello World!";//去掉text的public屬性 public void paint(Graphics g) {g.drawString(text,20,20);} //這裡增加一個public函數 public void SetString(String NewString) { text=NewString; repaint();//自動調用repaint()函數 } }

編譯後產生HelloWorld2.class;

example2.html

<html> <head><title>例子</title></head> <body> <script language="JavaScript"> <!-- function SetText() { document.app.SetString("世界你好!"); //這裡不再需要repaint()函數了 } //--> </script> Java Script與Java Applet的綜合運用例二<br> <applet code="HelloWorld2.class" width="100" height="28" name="app"> </applet> <form> <input type="button" value="請點擊這裡" > </form> </body> </html>

同樣開啟example2.html點擊按鈕後你會發現"Hello World!"變成了"世界你好!",說明調用函數成功



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。