Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序中的面板不显示_Java_Html_Applet_Awt - Fatal编程技术网

Java小程序中的面板不显示

Java小程序中的面板不显示,java,html,applet,awt,Java,Html,Applet,Awt,我在HTML页面中嵌入了一个Java小程序(Java.Applet.Applet)。有一个控件类,它扩展了Applet,还有一个面板(java.awt.Panel),与Applet的形状和大小相同,可以在屏幕上显示所有内容 当我从NetBeans IDE运行项目时,所有内容都按预期显示:小程序打开并包含一个带有启动屏幕的面板 当我从网站上的HTML页面运行项目时,我看到一个空白的白色页面。图像不加载;在GoogleChrome中,我可以右键点击页面并点击“检查元素”,整个游戏显示和功能正常。您可

我在HTML页面中嵌入了一个Java小程序(
Java.Applet.Applet
)。有一个控件类,它扩展了Applet,还有一个面板(
java.awt.Panel
),与Applet的形状和大小相同,可以在屏幕上显示所有内容

当我从NetBeans IDE运行项目时,所有内容都按预期显示:小程序打开并包含一个带有启动屏幕的面板

当我从网站上的HTML页面运行项目时,我看到一个空白的白色页面。图像不加载;在GoogleChrome中,我可以右键点击页面并点击“检查元素”,整个游戏显示和功能正常。您可以在上查看该页面

我的想法是:面板显示在小程序后面,而不是小程序前面

下面是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比较陌生,任何指针都会很受欢迎。

尝试使用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{
专用面板显示面板;
@凌驾
公共void init(){
设置聚焦(真);
}
@凌驾
公开作废开始(){
displayPanel=新的溅屏(本);
添加(显示面板);
displayPanel.requestFocus();
}
公共无效设置显示面板(面板显示面板){
移除(这个显示面板);
this.displayPanel=displayPanel;
添加(此.displayPanel);
this.displayPanel.requestFocus();
}
}

1)通过html运行时,浏览器的Java控制台中是否会出现错误消息?2) 看起来您真的想使用CardLayout,而不是手动交换组件。3) 您最好创建Swing JApplets而不是AWT小程序。4) 很多人会说,两者都不使用可能会更好,applet技术已经过时,大多数人都在使用HTML5/CSS/JS。我的项目的其余部分(一个基本的侧滚射击程序)在很大程度上依赖于java.awt。我一直在使用Applet而不是JApplet,因为我读到我不应该混合使用Swing和AWT组件。在这种情况下这是个好主意吗?我不知道我可以在浏览器中查看Java控制台错误消息。没有任何错误消息。在此之后阅读的读者:以下是您对控制台的看法。html代码呢?如果在netbeans上启动时效果很好,那么这在html中也可能是一个“错误”,而不是在applet中。您可以通过编译源代码查看从netbeans生成的html代码,并查看dist文件夹中生成的html文件。如果此html在Chrome中完美地显示了小程序,则这不是小程序问题。更改为JApplet不会改变结果。我把JApplet版本发布在了。你有没有试着在代码中添加注释行?代码顶部写的Yeah在我的系统中运行良好,您使用的是哪种浏览器,请尝试google chrome,或者检查您的浏览器是否支持java运行时,如果不支持,请安装支持java的插件谢谢1。确认小程序为您正确显示,以及2。关于顶部注释掉的行的提示。我还不明白为什么会有不同,但确实如此。我在装满鳗鱼的气垫船上看到了很多无用的评论。我不会利用他的知识。这只是我的个人建议,因为我一直在stackoverflow。