在 Java 中添加画布后无法关闭窗口


public class Screen extends Canvas{
    private BufferedImage image;
    private int height = Toolkit.getDefaultToolkit().getScreenSize().height-37;
    private int width = Toolkit.getDefaultToolkit().getScreenSize().width;
    private boolean running = false;
    public Screen(){
        setSize(width, height);
        try {image = ImageIO.read(new File("success.jpg"));}
        catch (Exception e) {Utilities.showErrorMessage(this, e);}
        setVisible(true);
        running = true;
    }

    public void paint(Graphics g){
        while(running){
            BufferStrategy bs = getBufferStrategy();
            if(bs == null){
                createBufferStrategy(3);
                return;
            }
            g = bs.getDrawGraphics();
            g.drawImage(image,0,0,width,height, null);
            g.dispose();
            bs.show();
        }
    }
}

这是我的Game JFrame中的一个初始显示屏幕,在开始游戏时添加。代码运行良好,但添加画布后,我似乎无法通过正常手段退出程序。(退出按钮)它在菜单中工作得很好,是的,我确实在JFrame中设置了defaultCloseOperation。你知道为什么会这样吗?

这个…

public void paint(Graphics g){
    while(running){
        BufferStrategy bs = getBufferStrategy();
        if(bs == null){
            createBufferStrategy(3);
            return;
        }
        g = bs.getDrawGraphics();
        g.drawImage(image,0,0,width,height, null);
        g.dispose();
        bs.show();
    }
}

不是自定义绘画应该做的。基本上这是阻塞事件队列,这意味着,除了能够响应新的绘制事件,它阻止它处理任何新的事件。

在这种情况下,最好创建一个单独的Thread,并在Threadrun方法中执行此操作。

查看在AWT和Swing中绘画了解更多细节

相关内容

  • 没有找到相关文章

最新更新