Java repaint()不';不能在浏览器中工作
我已经用Java制作了一个游戏,当我在Eclipse中运行它时,它不会有任何问题。每件事看起来都很棒,而且做得很有效(至少在我想出其他办法之前是这样)。所以我一直试图把它放在我的网站上,但每当我在浏览器中运行游戏时,我只会看到一个白色的屏幕,尽管检查Java控制台不会显示任何错误。我已设法把问题缩小到屏幕的油漆上。我有一个计时器,可以运行游戏,让事情发生。最后,它调用repaint()方法。在Eclipse中,这很好,但在浏览器中,什么都没有发生 以下是相关代码(所有代码都在名为FinalProject的主类中): runGame()由计时器调用。在Eclipse中,输出为:Java repaint()不';不能在浏览器中工作,java,paint,repaint,Java,Paint,Repaint,我已经用Java制作了一个游戏,当我在Eclipse中运行它时,它不会有任何问题。每件事看起来都很棒,而且做得很有效(至少在我想出其他办法之前是这样)。所以我一直试图把它放在我的网站上,但每当我在浏览器中运行游戏时,我只会看到一个白色的屏幕,尽管检查Java控制台不会显示任何错误。我已设法把问题缩小到屏幕的油漆上。我有一个计时器,可以运行游戏,让事情发生。最后,它调用repaint()方法。在Eclipse中,这很好,但在浏览器中,什么都没有发生 以下是相关代码(所有代码都在名为FinalPro
游戏开始了
绘画
绘画
即将绘画
绘画
即将绘画
绘画
即将绘画
绘画
在浏览器中执行此操作时(直接在我的计算机上脱机运行。所有浏览器也有相同的问题),控制台显示:
…(正在加载内容)
游戏开始了
基本:小程序已初始化
基本:启动小程序
基本:已完成性能汇总
基本:使小程序可见
基本:小程序已启动
基本:通知客户端小程序已启动
即将绘画
即将绘画
即将绘画
我不知道在这一点上还有什么可以尝试的。尽管我做了很多努力,但我仍然不能完全理解repaint()到底做了什么,我只知道它最终调用了update()和paint()。但这在浏览器中似乎没有发生。我正在使用Windows764X和Java版本7更新5。提前感谢您的帮助。结果是,问题出在移除菜单栏上。我在不久前发现了一些代码,它可以从程序中删除菜单栏,并且工作起来没有任何问题。然而,它似乎阻止了它在浏览器中重新绘制。我不知道为什么重新粉刷会因为移除菜单栏而中断,但显然是这样 我使用的代码(在init()中):
这段代码确实根据需要删除了菜单栏,但也在程序上线时分解了它。删除此选项修复了此问题。幸运的是,菜单栏无论如何都不会在线显示,因此删除这段代码不会造成太大损失。我没有任何问题。但是,我确实将您的
update
方法改为调用super.update(g)
public class FinalProject extends JApplet implements ActionListener,
KeyListener, MouseListener, MouseMotionListener {
public void init(){
//...initialize program
System.out.println("game started");
}
/**
* A method called every so often by a timer to control the game world.
* Mainly calls other functions to control objects directly, but this
* is used as the only timer, which also calls repaint() at it's end.
*/
private void runGame(){
//...Run game and do important stuff
//This Draws The Screen
System.out.println("about to paint");
repaint();
}
public void paint(Graphics g){
System.out.println("painting");
//...paint screen
}
public void update(Graphics gr){
System.out.println("updating");
paint(gr);
}
}
Frame[] frames = Frame.getFrames();
for (Frame frame : frames){
frame.setMenuBar(null);
frame.pack();
}