【问题标题】:Panel in Java Applet does not displayJava Applet 中的面板不显示
【发布时间】: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 问题。

标签: java html applet awt


【解决方案1】:

试试这个 Control.java 而不是你的 Control.java

//<applet code="Control.java" height=200 width=500></applet>
public class Control extends JApplet {
    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();
    }
}

【讨论】:

  • 更改为 JApplet 并没有改变结果。我在philipthegreat.com/control_1.html 发布了 JApplet 版本
  • 您是否尝试在代码中添加注释行?写在代码的顶部
  • 是的 philipthegreat.com/control_1.html 在我的系统中运行良好,您使用的是哪个浏览器,尝试 google chrome,或者检查您的浏览器是否支持 java 运行时,如果不安装插件以支持 java
  • 感谢您 1. 确认 Applet 为您正确显示,以及 2. 关于顶部注释行的提示。我(还)不明白为什么会有所作为,但确实如此。
  • 我已经看到了很多 Hovercraft Full Of Eels 的无用 cmets。我不会使用他的知识。个人建议,因为我一直在使用 stackoverflow。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
相关资源
最近更新 更多