Java-绘制、JFrame和背景

Java-绘制、JFrame和背景,java,background,jframe,paint,drawimage,Java,Background,Jframe,Paint,Drawimage,我试图为我的游戏绘制一个欢迎屏幕,但只有在游戏加载时。我不想在比赛中每次都重新粉刷 所以我这样做了(其中isStart被实例化为true): 问题是图像会弹出一秒钟然后消失?奇怪的是,当我省略if语句/isStart条件时,它会工作。这有什么问题吗?我猜您的newStarting布尔值会在面板绘制后立即更改为false。它立即消失的原因是由Swing框架触发的重新绘制。另外,您已经在重写的paint()方法中编写了欢迎屏幕的代码 有关如何启动飞溅窗口的详细说明,请参阅链接。 您还有一个Java

我试图为我的游戏绘制一个欢迎屏幕,但只有在游戏加载时。我不想在比赛中每次都重新粉刷

所以我这样做了(其中isStart被实例化为true):


问题是图像会弹出一秒钟然后消失?奇怪的是,当我省略if语句/isStart条件时,它会工作。这有什么问题吗?

我猜您的
newStarting
布尔值会在面板绘制后立即更改为
false

它立即消失的原因是由Swing框架触发的重新绘制。另外,您已经在重写的paint()方法中编写了欢迎屏幕的代码

有关如何启动飞溅窗口的详细说明,请参阅链接。
您还有一个Java 1.6中的类,我猜您没有逐字复制代码,并且上面的代码中有一个错误。如果你的代码和我想的一样

public void paint(Graphics g) {
    if(isStart)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}
然后在开始时,它将绘制您的启动屏幕。但是,由于随后将isStart设置为false,因此下次调用paint时,将不再绘制图像。每当操作系统告诉屏幕需要刷新时(以及当您强制重新绘制时),就会调用paint方法


解决此问题的方法是,在游戏加载完成后,在应用程序中将isStart设置为false,然后调用repaint。

还有其他方法吗?一个处理JFrame而不是JWindow的程序?是的,但它不应该只输入一次if语句,然后绘制一次背景吗?然后它将退出paint()方法,并且不会返回,因为我不再调用repaint()。(也就是说,还没有。)
public void paint(Graphics g) {
    if(isStart)
        g.drawImage(WelcomeGameScreen, 0, 0, null);
    isStart = false;
}