defaut ParticleApplication的消息在哪里?

时间:2016-04-25 13:49:58

标签: javafx-8 gluon gluon-desktop

我正在创建一个Gluon ParticleApplication,我需要更改退出消息和/或退出程序,它在哪里或我应该覆盖什么? 谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

当前实现使用Alert对话框,只要有退出事件(来自工具栏或菜单操作)或关闭请求事件,就会显示消息。

虽然此对话框不可自定义,但有一个showCloseConfirmation属性允许您取消该对话框,因此您可以静默退出应用程序,或者您可以提供自己的对话框。

例如,基于使用Gluon插件创建的默认单个桌面项目,我们可以修改exit下的MenuActions操作:

@Inject
ParticleApplication app;

@ActionProxy(text="Exit", accelerator="alt+F4")
private void exit() {
    // disable built-in dialog
    app.setShowCloseConfirmation(false);
    // create a custom dialog
    Alert dialog = new Alert(Alert.AlertType.CONFIRMATION, "Custom exit Message");
    Optional<ButtonType> result = dialog.showAndWait();
    if(result.isPresent() && result.get().equals(ButtonType.OK)) {
        app.exit();
    }
}

此外,您需要在主课程中处理关闭请求事件,使用这些事件并调用exit操作:

@Override
public void postInit(Scene scene) {
    ...
    scene.windowProperty().addListener(new InvalidationListener() {
        @Override
        public void invalidated(Observable observable) {
            scene.getWindow().setOnCloseRequest(e -> {
                e.consume();
                action("exit").handle(new ActionEvent());
            });

            scene.windowProperty().removeListener(this);
        }
    });
}