当前位置: 首页 > 知识库问答 >
问题:

子fxml文件未加载到父fxml

谯嘉懿
2023-03-14

大家好,我是fxml的新手,所以请忽略我的愚蠢的问题,这里有几个东西,我尝试了两天,但没有成功

>

  • 从表中删除空白,即表大小应达到可用行数(行数不同)
  • 用户单击表行(任何显示值)时,新的fxml文件将在定位窗格(显示tableview)中打开,分配给tableview,但我想在主视图中显示它(这里显示的是整个表和两个文本字段以及主堆栈后面的搜索按钮)主视图(其他只有标题和侧栏的fxml文件)

    如下图表所需物品图像链接所示

    这是我的代码

       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();
                 }
              }
            });
    
  • 共有1个答案

    文英达
    2023-03-14

    对于第一点,这里是解决方案:您可以在tableview中设置您的cellSize,然后您就可以使用它来获取行的高度(我发现这是获取行高度的最简单的方法)。之后,您必须将表的prefheight绑定到数据的大小,如下所示:

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

    有一个.add(30),因为您必须添加TableHeaderRow的大小,这是最简单的方法,可以做一些实验并显式设置该值。如果您希望获取精确的值,可以通过.lookups获取TableHeaderRow然后获取其高度。

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

     类似资料:
    • 我的应用程序有选项卡式窗格,所以为了保持fxml文件的可管理性,我有一个包含选项卡的主fxml文件,并为每个其他选项卡单独设置一个fxml。这很好,但出于某种原因,应用程序已经停止加载第二个标签。我试着在主应用程序中单独加载它,效果很好。我尝试创建一个新的fxml文件作为测试,并加载它,这也是有效的。但是,它不会将其加载到第二个选项卡中。此外,控制台没有输出。 第二个: 很抱歉代码太长,并提前感谢

    • 项目/ SRC/ 主/ Java/ 资源/ baselayout.fxml 不是应该有用吗?我本来工作得很好,但突然就不是了。我不知道还能做什么。

    • 为了完整起见,下面是toolbarview.fxml:

    • 我一直在做一个桌面应用程序,在那里我需要使用JavaFX。我在使用Scene Builder构建的eclipse上的JavaFX项目中创建了各种FXML文件。除了这个讨厌的文件(fxmlimglist.FXML)外,我加载任何FXML文件都没有问题。 其主要思想是,当按下一个按钮时,会出现一个新窗口。下面是该按钮的事件处理程序的代码: package explorer中的项目如下所示: https

    • 因此,在我尝试编写JavaFX教程和FXML示例时。但是,每当我在.fxml文件中向GridPane中添加一些内容时,程序就会崩溃。它打开一个普通的GridPane,如果没有其他东西放在其中。 } 究竟是什么原因导致它坠毁?