5

クライアントのコンピュータでファイルを開くための基本的なJavaアプレットを作成しようとしています。以下のJavaアプレットでJavaScriptを介してopenFile関数を呼び出したいと思います。

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();
        }
    }
}

私のウェブページのbodyタグの間に、次のものがあります。

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

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

ページをロードすると、次のエラーが発生します。

TypeError:オブジェクト#にはメソッド'openFile'がありません

このエラーを修正してアプレットを機能させるには、何をする必要がありますか?

4

1 に答える 1

6

使用する:

<script src=
  "http://www.java.com/js/deployJava.js"></script>

<script>
    <!-- The 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からのアプレットメソッドの呼び出し

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);
    }
}
于 2012-12-24T04:14:56.847 に答える