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

从子fxml上调父表视图

宰父衡
2023-03-14

场景:我有一个名为editclientdeatils.fxmL的父窗口,并在此窗口上有一个tableview。我正在通过创建另一个名为userdetails.FXML的窗口来编辑这些行结果,并将行数据填充到这个FXML字段中,现在在从第二个窗口进行编辑后,如果保存,我需要用最新的数据更新父表。但是当我调试时,我的表列表用最新的数据更新,并且不在窗口中显示。那么如何从不同的控制器更新表视图呢?

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("EditClientDetails.fxml"));
                EditClientDetailsController fooController = (EditClientDetailsController) fxmlLoader.getController();
                try {
                    fxmlLoader.load();
                } catch (IOException ex) {
                    Logger.getLogger(NewUserController.class.getName()).log(Level.SEVERE, null, ex);
                }

并且在我的父类中initialize方法具有以下代码:

@override public void initialize(URL URL,ResourceBundle rb){

    fNameCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientFirstName"));
    lNameCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientLastName"));
    addressCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientAddress"));
    mobileCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientMobileNumber"));
    emailCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientEmailID"));
    catagoryCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("clientTypeCode"));
    genderCol.setCellValueFactory(
            new PropertyValueFactory<AtUser, String>("gender"));

    editSaveAction.setSortable(false);

    editSaveAction.setCellValueFactory(
            new Callback<TableColumn.CellDataFeatures<AtUser, Boolean>, 
            ObservableValue<Boolean>>() {

        @Override
        public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<AtUser, Boolean> p) {
            return new SimpleBooleanProperty(p.getValue() != null);
        }
    });

     editSaveAction.setCellFactory(
            new Callback<TableColumn<AtUser, Boolean>, TableCell<AtUser, Boolean>>() {

        @Override
        public TableCell<AtUser, Boolean> call(TableColumn<AtUser, Boolean> p) {
            return new ClientButtonCell(customerTable);
        }

    });
    // Add filtered data to the table

    customerTable.setItems(filteredData);

    // Listen for text changes in the filter text field
    filterField.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable,
                String oldValue, String newValue) {

            updateFilteredData();
        }
    });

}  

当我调试时

customerTable.setItems(filteredData);

共有1个答案

翁翰
2023-03-14

我也有同样的问题,发现这个工作围绕着它,迫使它刷新。

table.getColumns().get(0).setVisible(false);
table.getColumns().get(0).setVisible(true);

修改表项列表后。

 类似资料:
  • 大家好,我是fxml的新手,所以请忽略我的愚蠢的问题,这里有几个东西,我尝试了两天,但没有成功 > 从表中删除空白,即表大小应达到可用行数(行数不同) 当用户单击表行(任何显示值)时,新的fxml文件将在定位窗格(显示tableview)中打开,分配给tableview,但我想在主视图中显示它(这里显示的是整个表和两个文本字段以及主堆栈后面的搜索按钮)主视图(其他只有标题和侧栏的fxml文件) 如

  • 我需要你的帮助来解决这个问题,我想从不同的包中包含子fxml。如果child.fxml在同一位置,我可以将它们包含到parent.fxml中,但不知道如何将child.fxml添加到parent.fxml中,当两者都在不同的位置/包中时。 先谢谢你。

  • 在应用程序中使用JavaFX,我有一个main.fxml文件,其中包含一些fxml子文件。 我想从子控制器访问Main.fxml的MainController类。 我试着用一个例子来解释得更好: MainFXML: 主控制器: ChildFXML:

  • 为此使用的控制器是RootLayoutController.java 从这个MainMenubar.fxml文件内部也会加载,它是子fxml文件 此MainMenubar.fxml的控制器文件为MainMenubarController.java 我花了很多时间去寻找,如何从对子控制器组件执行的操作中更改父控制器组件?

  • 我有两个组成部分: 父组件 子组件 我试图从Parent调用child的方法,我尝试了这种方法,但无法得到结果: 有没有办法从父级调用子级的方法? 注意:子组件和父组件在两个不同的文件中。

  • 问题内容: 我有两个组成部分。 父组件 子组件 我试图从父级调用孩子的方法,我尝试过这种方法,但没有得到结果 有没有一种方法可以从父级调用子级的方法? 注意:子组件和父组件位于两个不同的文件中 问题答案: 首先,让我表示,这通常 不是 在React领域中解决问题的方法。通常,您要做的是将功能传递给道具中的子代,并传递事件中的子代的通知(或者更好的是:)。 但是,如果 必须 在子组件上公开命令式方法