child fxml 文件未加载到 parent fxml

child fxml file not loading to parent fxml

大家好,我是 fxml 的新手,所以请忽略我的愚蠢问题 以下是我尝试了 2 天但没有成功的几件事

  1. 从 table 中删除白色 space 即 table 尺寸应达到 可用行(行数不同)
  2. 当用户单击 table 行(任何显示值)时,新的 fxml 文件打开 分配给 table 视图的锚窗格(显示 table 视图)但我想在主视图中显示它(其中整个 table 和 2 个文本字段和搜索按钮在这个主堆栈后面我想在这里展示) 主视图(其他只有 header 和侧边栏的 fxml 文件)

    如下图link table image of required things

这是我的代码

   public void initialize(URL location, ResourceBundle resources) {
    databaseHandler = DatabaseHandler.getInstance();
    initCol();

        String qu = "SELECT * FROM country_tbl ";
        ResultSet rs = databaseHandler.execQuery(qu);
            try {
                while (rs.next()) {
                 String id= rs.getString("id");
                 String name= rs.getString("countryname");
                 String description = rs.getString("descr");
                 String country2char= rs.getString("country2char");
                 String descrshort = rs.getString("descrshort");
                 data.add(new addcountryController(id,name, description,country2char,descrshort));
                }
            }catch (SQLException ex) {
                Logger.getLogger(addcountryController.class.getName()).log(Level.SEVERE, null, ex);
            }

         tableUser.setItems(null);
         tableUser.setItems(data);

         tableUser.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
         tableUser.getSelectionModel().getSelectedItems().addListener(new ListChangeListener<addcountryController>() {
         public void onChanged(ListChangeListener.Change<? extends addcountryController> c) {
             try {

                 FXMLLoader loader =new FXMLLoader();
                 loader.load(getClass().getResource("/region/updatecountry.fxml").openStream());

                 updatecountryController usercontroller=(updatecountryController)loader.getController();
                    for (addcountryController p : c.getList()) {
                     String ADDID=p.getId();
                     String ADD=p.getName();    
                     String ADD1=p.getDescriptionshort();
                     String ADD2=p.getDescription();
                     String ADD3=p.getCountrychar();
                     usercontroller.setText(ADDID,ADD,ADD1,ADD2,ADD3);
                   }                     
                    StackPane root = loader.getRoot();
                    stackmain.getChildren().clear();
                    stackview.getChildren().add(root);     

             } catch (IOException e) {
                e.printStackTrace();
             }
          }
        });

您好,第一点是解决方案: 您可以在 tableView 中设置您的 cellSize,然后您将能够使用它来获取行高(我发现这是获取行高的最简单方法)。 之后,您必须像这样将 table 的 prefHeight 绑定到您的数据大小:

tableView.setFixedCellSize(20);
tableView.prefHeightProperty().bind(Bindings.size(data).multiply(tableView.getFixedCellSize()).add(30));

有一个 .add(30),因为您必须添加 tableHeaderRow 的大小,这是最简单的方法,可以做一些实验并明确设置该值。如果你想得到准确的值,你可以通过 .lookups 来得到 TableHeaderRow 然后得到它的高度。

我不太明白你的第二个问题,你想把它显示在哪里。您可以使用 FXMLLoader 加载该视图并添加到它,但如果您指定更好一点,您到底想添加在哪里(其中 .fxml,以及如何与 .fxml 链接包含 table).