2013-09-27 52 views
3

方案: 我有一個父窗口叫做EditClientDeatils.fxm升,並有一個TableView對此。我正在編輯這些行結果,創建另一個名爲UserDetails.fxml的窗口,並將行數據填充到這個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(URL網址,資源包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包含我的請求使用的數據,但不是在窗口上。 請指出我是否遺漏了任何東西。

+0

那就是說它不清爽? – Magcus

+0

是的,它不刷新 – Firu

回答

0

我有同樣的問題,並發現這項工作圍繞它,迫使其刷新。

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

修改表項目列表後。

+0

:(不適用於我.. – Firu

+0

你可以發佈你的代碼,以便我可以看看它嗎? 我的意思是 – Magcus