如何在JavaFX中获取当前打开的阶段?

2022-09-02 23:08:04

有没有办法在JavaFX中获取当前打开的阶段,如果有一个打开的?

像这样:

Stage newStage = new Stage();
newStage.initOwner(JavaFx.getCurrentOpenedStage()); //Like this

答案 1

Java 9通过添加该方法使这成为可能。因此,您可以只获取Windows列表,并查看哪些正在显示javafx.stage.Window.getWindows()

List<Window> open = Stage.getWindows().stream().filter(Window::isShowing);

答案 2

如果需要事件处理程序方法中的当前阶段引用,可以从 ActionEvent 参数中获取它。例如:

    @FXML
    public void OnButtonClick(ActionEvent event) {

        Stage stage = (Stage)((Node) event.getSource()).getScene().getWindow();

       (...)
    }

还可以从控制器中声明的任何控件获取它:

@FXML
private Button buttonSave;

(...)    

Stage stage = (Stage) buttonSave.getScene().getWindow();

推荐