那么如何在点击按钮上结束应用程序/游戏并退出,就好像已经点击了窗口红色关闭符号(X)或更好 如何结束当前的应用程序而不关闭整个窗口/阶段会启动一个新的? 所以我们有类似
的东西public class Main extends Application
{
public Scene scene ;
private parent createContent()
{
// root pane, nodes and everything is here
//which makes up the game
//return root;
}
@Override
public void start(Stage stage)
{
scene = new Scene(createContent());
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {launch(args); }
}
因此,在当前游戏结束时,用户应该选择启动新游戏或通过单击按钮完全退出应用程序。如果他应该点击退出游戏,则游戏应该关闭,就像他按下了窗口红色x关闭符号一样。 如果用户点击开始新游戏,那么首选行为将是方法 私有父createContent() 重新开始,但当然应该消除在之前调用createContent()中创建的所有阶段和节点。
如何做到这一点?
答案 0 :(得分:0)
注册OnCloseRequest的处理程序:
stage.setOnCloseRequest(windowEvent -> appToBeClosed(stage, windowEvent));
下面显示带问题对话框的方法。只有当用户决定留下你时,才应该使用当前窗口事件并执行其他操作,否则应用程序将被关闭:
private void appToBeClosed(Stage notUsedStage, WindowEvent windowEvent) {
if (hasNotSavedEvents()) {
final Optional<ButtonType> userResponse = alertAboutNotSavedChangedEvents(
"alert.changed.header", "alert.changed.content");
if (userResponse.isPresent() && userResponse.get() == ButtonType.NO) {
windowEvent.consume();
}
}
}
private Optional<ButtonType> alertAboutNotSavedChangedEvents(String headerResourceKey,
String contentResourceKey) {
final Alert alert = new Alert();
// TODO prepare alert as you wish...
return alert.showAndWait();
}
我希望主要想法很明确,您将能够将其应用到您的项目中。 让我知道你的问题。