【发布时间】:2012-05-02 02:10:18
【问题描述】:
我有这个代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainApp extends JApplet implements ActionListener {
private static final long serialVersionUID = -7076767216192554828L;
JButton begin = new JButton(new ImageIcon("splash.png"));
@Override
public void init() {
setSize(300, 300);
setLayout(new BorderLayout());
begin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
begin();
}
});
add(begin);
setVisible(true);
}
private void begin() {
remove(begin);
repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
//to be used later
}
}
在 Eclipse 的小程序查看器中可以完美运行。但是,在 HTML 中,它失败了:
<html>
<head>
<title> Test </title>
<body>
<APPLET code="MainApp.class" width="300" height="300"> Applet unavailable </APPLET> <br>
<a href="essay.docx"> Essay </a> (right click, Save Target As, in the menu under the name change it to "All Files," save as "essay.docx")
</body>
</html>
当我运行它时,它会给出一个java.lang.reflect.InvocationTargetException!我查看了异常,发现没有任何帮助。
在我使用.png 作为按钮之前。一切都很好。我还添加了repaint(),但这并没有什么不同。
【问题讨论】:
-
splash.png相对于 HTML 或 applet Jars 的位置在哪里?该图像必须由URL而不是String访问,因为String被解释为File路径,并且小程序无法从服务器加载File,只能加载URL。跨度> -
那么如何获取图片的 URL?该图像位于包含 HTML 文件的文件夹中。哦,等等,没关系,安塞尔姆的评论有。
-
setSize(300, 300);小程序的大小应该在 HTML 中设置。不要尝试从代码中调整它的大小。 -
不客气。很高兴你把事情解决了。 :)
标签: java applet embedded-resource japplet