gpt4 book ai didi

java - 在Java中添加canvas后无法关闭窗口

转载 作者:行者123 更新时间:2023-12-01 12:56:18 24 4
gpt4 key购买 nike

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();
}
}
}

这是我的游戏 JFrame 中的初步显示屏幕,在启动游戏时添加。代码运行良好,但添加 Canvas 后,我似乎无法通过正常方式退出程序。 (退出按钮)它在菜单中运行良好,是的,我确实在 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 方法中执行此操作。

看看Painting in AWT and Swing了解更多详情

关于java - 在Java中添加canvas后无法关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com