1
問題:我有一個GDX桌面應用程序,我想在JFrame內部運行,這樣我就可以產生其他的JFrames parented到它,這樣當我關閉主其他窗口的遊戲也將關閉。LibGDX - 在JFrame中的Lwjgl畫布不能在跨平臺工作
嘗試的解決方案:我在JFrame應用程序中運行GDX應用程序,然後獲取其畫布並將其添加到內容窗格。
以前的代碼,它工作得很好(跨平臺):
public class DesktopLauncher {
public static void main (String[] arg) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.width = 800; config.height = 600;
new LwjglApplication(new GDXRoot(), config);
}
}
基礎的JFrame,新方法(到目前爲止,我只得到它在Windows 8工作,它不工作的OS X,Windows 7甚至Windows 10技術預覽版):
public class EditModeLauncher extends JFrame {
final LwjglCanvas canvas;
LwjglApplicationConfiguration config;
public EditModeLauncher() {
config = new LwjglApplicationConfiguration();
config.width = 800; config.height = 600;
config.resizable = false;
canvas = new LwjglCanvas(new GDXRoot(), config);
canvas.getCanvas().setSize(800, 600);
getContentPane().setPreferredSize(new Dimension(800,600));
final JFrame test = new TestUI(this);
test.setLocation(800,300);
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
Runtime.getRuntime().halt(0); // because of deadlocks with shut down
}
});
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
getContentPane().add(canvas.getCanvas());
setVisible(true);
canvas.getCanvas().requestFocus();
}
});
test.setVisible(true);
}
private class TestUI extends JFrame {
private TestUI(final EditModeLauncher parent) {
// code omitted ...
}
}
public static void main (String[] arg) {
new EditModeLauncher();
}
}
任何想法可能是什麼問題?