当我尝试在JavaFX程序中调用swing程序的main function
时,swing程序正常运行。但是当我试图关闭swing程序时,JavaFx程序也会终止。什么原因?我该如何解决?
这是JavaFX程序代码:
private void initStartGameButton() {
startButton.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(!isPosValid()){
return;
}
String[] args = {"" + axePositionX, "" + axePositionY, "" + boatPositionX, "" + boatPositionY};
Game.main(args);
}
});
}
这是Swing程序代码:
// The entry point of the game.
// This class loads up a JFrame window and
// puts a GamePanel into it.
package com.neet.DiamondHunter.Main;
import javax.swing.JFrame;
public class Game {
public static String[] args;
public static void main(String[] args) {
//save the args list.
Game.args = args;
JFrame window = new JFrame("Diamond Hunter");
window.add(new GamePanel());
window.setResizable(false);
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 0 :(得分:1)
此:
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
窗口关闭时会导致JVM退出。根据{{3}}:
EXIT_ON_CLOSE(在JFrame中定义):使用System exit方法退出应用程序。仅在应用程序中使用它。
而是将默认关闭操作设置为其他内容,可能是
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
根据API:
DISPOSE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏和处理框架。
这将有助于清理和释放Swing使用的一些资源。