如何使用Java小程序获取绝对文件路径
我正在尝试在web浏览器中获取绝对文件路径。我了解到,使用纯HTML和javascript是不可能的,java小程序是最好的途径。不幸的是,我对java的了解充其量只是初步的。到目前为止,我有以下java代码:如何使用Java小程序获取绝对文件路径,java,javascript,applet,liveconnect,Java,Javascript,Applet,Liveconnect,我正在尝试在web浏览器中获取绝对文件路径。我了解到,使用纯HTML和javascript是不可能的,java小程序是最好的途径。不幸的是,我对java的了解充其量只是初步的。到目前为止,我有以下java代码: import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import java.awt.Color; /* <OBJECT classid="clsid:8AD9C
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);
}
public String getFilePath() {
return tfCount.getText();
}
}
根据我在上所读的内容,我可以从javascript调用applet方法,因此我提出了以下测试网页:
<html>
<head>
</head>
<body>
<applet id="fileabs" archive="fileabs.jar" code="fileabs" width="960" height="60"></applet>
<a href="#;" onclick="test()">Test</a>
<script>
test = function() {
alert(fileabs.getFilePath());
};
</script>
</body>
</html>
但是,在firebug控制台中,我得到:
TypeError:fileabs.getFilePath不是函数
我觉得我错过了一些明显的东西。有人能帮我找出我这里的东西有什么问题吗?您需要先获得对applet DOM元素的引用。尝试alertdocument.getElementById'fileabs'。getFilePath 代码按照编写的方式工作。问题是小程序的缓存版本没有我调用的方法。HTML的设置方式仍然会失败。原因是,在声明applet元素之后,但在applet必须完全加载并处于活动状态之前,会立即调用脚本+代码结构直接基于我在上面发布的LiveConnect教程的链接。虽然对我来说它看起来也很奇怪,但它确实可以在不使用getElementById的情况下正常工作;脚本标记中唯一的东西是一个常规函数,在单击测试链接之前不会调用该函数。此时,小程序已加载,函数可以访问它。