在JavaFX中显示和隐藏主舞台

时间:2017-03-24 09:33:44

标签: java javafx

默认情况下,当在JavaFX中关闭所有窗口时,应用程序将终止。但是,我使用Platform.setImplicistExit(false)让应用程序停留。现在,当应用程序被激活时,我将如何显示应用程序?从Mac Dock Bar激活应用程序时,我可以听到任何activate事件监听器吗?

@Override
public void start(final Stage stage) throws Exception {
    stage.setTitle("Hello World");

    stage.setScene(
            createScene(
                    loadMainPane()
            )
    );

    stage.show();

    Platform.setImplicitExit(false);
    stage.setResizable(false);
}

或者当点击系统关闭按钮时有一个事件听听,所以我可以隐藏舞台stage.close(),应用程序会显示何时被激活?

1 个答案:

答案 0 :(得分:1)

查看此代码是否有用。这会在关闭请求时最小化阶段,而不是关闭隐式退出。你仍然需要一种在没有任务管理器的情况下正确关闭它的方法,但这看起来像你想要的。如果它不只是在下面评论。

package minimalist;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Stack_Overflow extends Application{

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        TextArea text = new TextArea();
        text.setText("Hello World!");
        StackPane stack = new StackPane();
        stack.getChildren().add(text);
        Scene scene = new Scene(stack);
        primaryStage.setScene(scene);
        primaryStage.setOnCloseRequest(e -> {
            e.consume();
            primaryStage.setIconified(true);
        });
        primaryStage.show();
    }
}