程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JavaScript與Java Applet的綜合運用

JavaScript與Java Applet的綜合運用

編輯:關於JAVA

在WWW中Java因其靈活性而得到越來越廣泛的運用,許多的網頁都使用了Java來增加動感和與用戶進行交互對話.在WWW中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="請點擊這裡" onclick="SetText()">
</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中的變量的方法(嚴格來講應該是改變了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>
<applet code="HelloWorld2.class" width="100" height="28" name="app">
</applet>
<form>
<input type="button" value="請點擊這裡" onclick="SetText()">
</form>
</body>
</html>

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved