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