2012-12-24 16 views
5

クライアントのコンピュータ上でファイルを開くための基本的なJavaアプレットを作成しようとしています。私はjavascript経由でJavaアプレットのopenFile関数を呼び出しています。私のWebページのbodyタグの間でJavaScriptからアプレットで宣言されたメソッドを呼び出す方法

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 

import javax.swing.JApplet; 

public class Test extends JApplet { 
    public void openFile(String filePath) { 
     File f = new File(filePath); 

     try { 
      Desktop.getDesktop().open(f); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

私は、次のしている:

<applet code="Test.class" height="0" width="0"></applet> 

<script type="text/javascript"> 
    document.applets[0].openFile("C:\\test.log"); 
</script> 

私はページをロードすると、私はエラーを取得する:

TypeError: Object # has no method 'openFile'

誰も私には必要なものを知っていますこのエラーを修正してアプレットを動作させるには?

+0

アプレットはバージョン管理システムのコンポーネントです。別のWebサービスでコードを "チェックアウト"するときにクライアントコンピュータにファイルがコピーされますが、同時にデフォルトのテキストエディタで自動的に開きます。あなたがテキストファイルを開くためのより簡単な方法を考えることができるなら、私はすべての耳です。 – Daniel

答えて

6
<script src= 
    "http://www.java.com/js/deployJava.js"></script> 
<script> 
    <!-- applet id can be used to get a reference to 
    the applet object --> 
    var attributes = { id:'mathApplet', 
     code:'jstojava.MathApplet', width:1, height:1} ; 
    var parameters = {jnlp_href: 'math-applet.jnlp'} ; 
    deployJava.runApplet(attributes, parameters, '1.6'); 
</script> 

参考:Javascriptが直接アプレットのパブリックメソッドやパブリック変数を呼び出すことが許可されている

Invoking Applet Methods From JavaScript

を更新。 Javascriptは、埋め込まれたアプレットをオブジェクトと見なします。 IDとアプレットを提供することにより、Javascriptが

document.Applet_ID.Applet_Method() 

でそれにアクセスすることができますし、これを使用することができ、

MyApplet.html

<html> 
<head> 
<script language="Javascript"> 
function accessAppletMethod() 
{ 
    document.getElementById("AppletABC").appendText("Applet Method"); 
} 
</script> 

<title>Testing</title></head> 
<body onload="accessAppletMethod()"> 

<h1>Javascript acess Applet method</h1> 
<applet width=300 height=100 id="AppletABC" 
code="JavaScriptToJava.class"> 
</applet> 

</body> 
</html> 

JavaScriptToJava.java

import java.applet.Applet; 
import java.awt.FlowLayout; 
import java.awt.TextArea; 

public class JavaScriptToJava extends Applet{ 

    TextArea textBox; 

    public void init(){ 
     setLayout(new FlowLayout()); 
     textBox = new TextArea(5,40); 
     add(textBox); 
    } 

    public void appendText(String text){ 
     textBox.append(text); 
    }  
} 
+2

'getElementById'よりどのように読みやすくなっていますか? – Ian

+2

いつから 'document.Applet_ID'をいつ行うことができますか? – Ian

+0

@ダニエル今、更新を行ってください – Ravi

関連する問題