javafx-2 - 父 TableView 从子 fxml 更新

标签 javafx-2 javafx javafx-8

场景: 我有一个名为 EditClientDeatils.fxml 的父窗口,并在其上有一个 TableView 。我正在通过创建另一个名为 UserDetails.fxml 的窗口并将行数据填充到此 FXML 字段来编辑这些行结果,现在从第二个窗口进行编辑后,如果保存,我需要使用以下命令更新父表最新数据。我尝试了如下所示的操作,但根本不刷新表格。但是当我调试时,我的表列表已更新为最新数据,并且没有在窗口中显示。 那么如何从不同的 Controller 更新我的表格 View ?

在子窗口中,我像这样加载父窗口。

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);
                }

在我的父类初始化方法中具有以下代码:

@覆盖 公共(public)无效初始化(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);

filteredData 包含我所需的数据,但不在 Window 上。 如果我遗漏了什么,请指出。

最佳答案

我遇到了同样的问题,并发现这个工作围绕它,强制它刷新。

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

修改表格项目列表后。

关于javafx-2 - 父 TableView 从子 fxml 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042074/

相关文章:

javafx - 相当于 JavaFX 中 SplitPane 上的 setResizeWeight()?

java - 每当鼠标在场景上移动时如何使节点移动(在 JavaFX 中)?

java - 如何修复JavaFX中舞台启动时可见位置的跳转?

java - 如何从 fxml 文件中的 xml 文件读取值?

java 8 javafx getBehavior() 替代方案?

javafx-2 - Javafx,获取一个TableCell引用的对象

javafx-2 - 在 Java FX 中扩展类?

javafx - JavaFX中 slider 拇指的值

带有图标和文件名的 JavaFX 文件 ListView

multithreading - 如何避免不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程错误?