光滑的游戏引擎无法使用JFrame

时间:2012-02-22 14:58:15

标签: jframe slick2d

我想在JFrame中集成光滑。 但我面临以下问题: 1.当我试图关闭框架时,它会停止光滑的游戏而不是框架。

请查看我的代码如下:

CanvasGameContainer canvasGameContainer1 = new CanvasGameContainer(new MainGame("Game 1"));
canvasGameContainer1.setBounds(20, 20, 400, 400);
newFrame = new JFrame("With JFrame");
newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
newFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
newFrame.add(canvasGameContainer1);
newFrame.setVisible(true);
canvasGameContainer1.start();

我在光滑的论坛上发布了同样但没有解决方案。 这是a link同样的......

2 个答案:

答案 0 :(得分:0)

我不知道为什么你需要将它包装在JFrame中。您是否还在应用程序中添加菜单(例如,不是在游戏容器中渲染它们)?我想我的问题是,为什么要将它包装在一个JFrame中开始 - 也许有一个特定的用例,我没想到?你可以偶然发布截图吗?

我认为混合窗口套件可能会有问题。我只是创建一个AppGameContainer的实例,并将全屏选项设置为false。结果,Slick给了我一个带有关闭按钮的窗口。当我点击关闭按钮时,应用程序正常关闭。

我只是在Mac OS X 10.6上使用JDK 6正式测试了这个,但理论上它应该适用于其他地方。

这是我初始化容器的文件和代码:

https://github.com/normalocity/pedestrians/blob/master/src/StartPedestrians.java

AppGameContainer container = new AppGameContainer(pedSim);
container.setDisplayMode(800, 600, false);

答案 1 :(得分:0)

我知道这是一篇很老的帖子,但是如果有些人仍在努力解决框架没有关闭的问题,这里有一个适用于Windows的解决方案:

  • 将您的框架defaultCloseOperation设置为DISPOSE_ON_CLOSE
  • 在您的框架的WindowClosing事件中,处置GameContainer
  • 在您的框架的WindowClosed事件中,calll System.exit(0)