子fxml文件未加载到父fxml

时间:2017-07-26 05:51:28

标签: javafx javafx-8 fxml

你好,我是fxml的新手,所以请忽略我的愚蠢问题 这里有一些我尝试了2天但没有成功的事情

  1. 从表中删除空格,即表格大小应该是最多的 可用行(行数不同)
  2. 当用户点击表格行(任何显示值)时,将打开新的fxml文件 为tableview分配的Anchor窗格(显示tableview)但是我想在主视图中显示它(这个主要堆栈后面的整个事物表和2个文本字段和搜索按钮我想在这里显示) 主视图(其他fxml文件只有标题和侧边栏)

    如图片的下方链接所示 表 image of required things

  3. 这是我的代码

       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 个答案:

答案 0 :(得分:2)

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

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

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

我真的不明白你的第二个问题你想在哪里显示它。您可以使用FXMLLoader加载该视图并添加到该视图中,但如果您指定一点点更好,您确切想要添加哪个({1}},以及如何与.fxml链接包含表格。