将值传递给Java中的javascript

时间:2013-04-15 20:21:40

标签: java javascript applet

我有以下Java applet。它获取用户选择的文件的绝对文件路径:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.awt.Color;
/*
   <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
           width=150 height=100 
 codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"> 
     <PARAM NAME="code" value="FileApplet.class">
   </OBJECT>
 */

public class fileabs extends JApplet
{
   private JTextField tfCount;
   final JFileChooser fc = new JFileChooser();

  public void init() {
      setBackground(Color.WHITE);
        JPanel p = new JPanel( new FlowLayout(FlowLayout.CENTER, 15, 15));
        p.add(new JLabel("Select File: "));
        tfCount = new JTextField(50);
        tfCount.setEditable(false);
        p.add(tfCount);
        JButton b2 = new JButton("Browse...");
        p.add(b2);
        b2.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
               tfCount.setText("dsds");
                int returnVal = fc.showOpenDialog(fileabs.this);
                tfCount.setText(fc.getSelectedFile().getAbsolutePath());
            }
        } );

        // p.add(label);
        add(p);
    }
}

但是,我需要能够将其发送到另一种语言的表单(python / django)。我如何获取abolsute路径的值,以便我可以在javascript中解析它?现在,我无法访问路径,即使它显示在applet中。

1 个答案:

答案 0 :(得分:1)

您应该考虑使用LiveConnect,它允许applet与页面中的JavaScript交互,反之亦然。

以下代码使用单个参数调用页面中的全局JavaScript函数setPath

netscape.javascript.JSObject.getWindow(appletInstance)
    .call("setPath", new Object[] { path });

必须使用设置为mayscripttrue的参数mayscript启动小程序才能使用LiveConnect。