假设我有一个Stage A,其中包含两个Buttonoui Button打开一个新的Stage Bnon关闭A。我想做的是单击A oui后关闭Button并打开B。我正在使用showAndWait()打开B,然后尝试执行A.close(),当我尝试在showAndWait() A.close()关闭之前运行showAndWait()时,显然无法在A之前执行所有B控件(包括ButtonText Field)都变为非活动状态,是否有任何解决方法?

这是单击oui以打开B Stage时执行的代码:

public class AController implements Initializable {

    @FXML
    private Button oui;
    @FXML
    private Button non;

    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO

    }

    @FXML
    private void ouiBtnClick(ActionEvent event) throws IOException {

    FXMLLoader loader = new FXMLLoader();
    loader.setLocation(getClass().getResource("B.fxml"));

    Stage stage = new Stage();
    VBox mainPane = (VBox) loader.load();
        Scene scene = new Scene(mainPane);

    stage.setScene(scene);
    stage.initStyle(StageStyle.DECORATED);
    stage.setResizable(false);


        stage.showAndWait();
        nonBtnClick(); // method that close `A`


    }

    @FXML
    private void nonBtnClick() {
        Stage s = (Stage) non.getScene().getWindow();
        s.close();
    }

}

最佳答案

使用show代替showAndWait可以解决问题。感谢Sedrick Jefferson的评论。

10-01 19:11