我正在使用javaFX 8,我想要一种方法来防止用户在子表单仍处于打开状态时访问父表单



加载 fxml 表单以显示在屏幕上

Stage mainStage = new Stage(); 
    try {  
        Parent main = FXMLLoader.load(getClass().getResource("main.fxml"));
        Scene scene= new Scene(main);
        //getting the css style sheet              
        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
        mainStage.setScene(scene);
        mainStage.setTitle("HUB KB.S CO. LTD");
        mainStage.setMaxHeight(530);
        mainStage.setMaxWidth(450);
        mainStage.setMinWidth(400);
        mainStage.setMinHeight(500);
        mainStage.setTitle("HUB KBS INVENTORY"); 
        mainStage.resizableProperty().setValue(Boolean.FALSE);
        mainStage.show();               
        } catch (IOException e) {
           e.printStackTrace();    
        }
    }

我想要一种方法来防止用户在子窗体仍处于打开状态时访问父窗体

假设您发布的代码显示"子表单",只需执行

mainStage.initModality(Modality.APPLICATION_MODAL);

在打电话给mainStage.show()之前。

作为替代方案 - 如果您有多个阶段并且只需要一个阶段,则可以执行以下操作。

mainStage.initModality(Modality.WINDOW_MODAL);
mainStage.initOwner(primaryStage);
mainStage.show();

这将使子窗口模态化为单个窗口,而不是整个 JavaFX 线程。

相关内容

最新更新