【发布时间】:2014-02-26 01:42:08
【问题描述】:
我有一个嵌入 HTML 页面的 Java Applet (java.applet.Applet)。有一个 Control 类,extends Applet 和一个 Panel (java.awt.Panel) 的形状和大小与 Applet 相同,可在屏幕上显示所有内容。
当我从 NetBeans IDE 运行项目时,一切都按预期显示:Applet 打开并包含一个带有我的启动屏幕的面板。
当我从我网站上的 HTML 页面运行项目时,我看到一个空白页面。图片确实加载;在谷歌浏览器中,我可以右键单击页面并单击“检查元素”,整个游戏可以正常显示和运行。您可以在http://www.philipthegreat.com/control.html查看页面。
我的想法:面板显示在 在小程序的后面,而不是在 在小程序的前面。
这是 Control 和 SplashScreen 类中的代码。
控制
public class Control extends Applet {
private Panel displayPanel;
@Override
public void init() {
setFocusable(true);
}
@Override
public void start() {
displayPanel = new SplashScreen(this);
add(displayPanel);
displayPanel.requestFocus();
}
public void setDisplayPanel (Panel displayPanel) {
remove(this.displayPanel);
this.displayPanel = displayPanel;
add(this.displayPanel);
this.displayPanel.requestFocus();
}
}
启动画面
public SplashScreen(Control control) {
setLayout(null);
setSize(800,600);
setBackground(Color.BLUE);
this.control = control;
init();
}
public void init() {
try {
splashScreen = ImageIO.read(getClass().getResourceAsStream("/images/SplashScreen.png"));
} catch (Exception e) {
e.printStackTrace();
}
addMouseListener((MouseListener) this);
}
public void destroy() {
}
@Override
public void paint(Graphics g) {
g.drawImage(splashScreen, 0, 0, null);
}
由于我对 Java 比较陌生,任何指针都将不胜感激。
【问题讨论】:
-
1) 当您通过 html 运行它时,您是否在浏览器的 Java 控制台中收到任何错误消息? 2)您看起来确实想使用 CardLayout 而不是手动交换组件。 3) 你最好创建 Swing JApplets 而不是 AWT Applets。 4) 很多人会说你最好都不用,Applet 技术已经过时了,而且大多数人都在使用 HTML5/CSS/JS。
-
我将使用 Swing JApplet 研究 CardLayout。我项目的其余部分(一个基本的横向滚动射击游戏)在很大程度上依赖于 java.awt。我一直在使用 Applet 而不是 JApplet,因为我读过我不应该混合使用 Swing 和 AWT 组件。在这种情况下是个好主意吗?
-
我不知道我可以在浏览器中查看 Java 控制台错误消息。没有任何错误消息。对于在此之后阅读的任何人:这是您查看控制台的方式。 java.com/en/download/help/javaconsole.xml
-
html代码呢?如果这在通过 netbeans 启动时工作得很好,那么这也可能是 html 中的“错误”,而不是小程序中的“错误”。您可以通过编译源代码查看 netbeans 生成的 html 代码,并查看 dist 文件夹中生成的 html 文件。如果此 html 在 Chrome 中完美显示您的 Applet,则这不是 Applet 问题。