2016-04-20 21 views
0

這是舊發票示例的這種編輯。 我有兩個表A和B, table_A用於通過搜索加載所有項目或項目,然後選擇並單擊添加按鈕將其添加到table_B。 table_B先前在發票中加載舊保存的項目。 *奇怪的是,當我點擊所有按鈕加載到table_A和table_B的所有按鈕!加上舊發票的舊保存項目。 *當我只刪除舊的invoice-item/s和設置這些item/s到table_B的行時,每件事情都很好。所以這個部分的問題我希望有人向我解釋。 table_A在左邊,table_B在右邊。 ***首先在下面添加兩行代碼之前提示表格工作正常。 This is a snipping of appJavaFX tableView,當向表A添加項目時,表B也將它們帶入?

// The code who makes unexpected issue: 
invoiceList = DBForInvoices.invoiceItems(invoice.getID()); 
table_B.setItems(invoiceList); 

// About tables 
@FXML private TableView<Item> table_A; //Table Of Search 
@FXML private TableColumn<Item, String> col_s_code; 
@FXML private TableColumn<Item, String> col_s_name; 

@FXML private TableView<Item> table_B; //Table Of Order Items  
@FXML private TableColumn<Item, String> col_o_name; 
@FXML private TableColumn<Item, String> col_o_quantity; 
@FXML private TableColumn<Item, String> col_o_price; 
@FXML private TableColumn<Item, String> col_o_warranty; 

private void setItemsTables() { 
// Setting columns of Search items. 
    col_s_code.setCellValueFactory(
      new PropertyValueFactory<Item, String>("code_3")); 
    col_s_name.setCellValueFactory(
      new PropertyValueFactory<Item, String>("name_4")); 

// Setting columns of invoice items. 
    col_o_name.setCellValueFactory(
      new PropertyValueFactory<Item, String>("name_4")); 
    col_o_quantity.setCellValueFactory(
      new PropertyValueFactory<Item, String>("quantity_6")); 
    col_o_price.setCellValueFactory( 
      new PropertyValueFactory<Item, String>("price_7")); 
    col_o_warranty.setCellValueFactory(
      new PropertyValueFactory<Item, String>("warranty_8")); 
} 
+0

你如何創建表格?你初始化時是否使用相同的列表?就像在API中一樣:'TableView(ObservableList items)' – mrbela

+0

當然不是,它們在創建新的發票,一個要搜索的列表和其他發票項目/ s的其他項目時正常工作。 –

+1

你能提供你的代碼如何創建表格,以及你如何設置它們的值? –

回答

0

假設ObservableList obsList是對的TableView基礎列表。 Then obsList.clear()(繼承自java.util.List<>)不會正確更新tableView,但是。

還呼籲setItem(obsList)沒有工作,以觸發刷新......但

obsList.removeAll(obsList)(由ObservableList覆蓋)工作正常,因爲它正確地觸發該changeEvent中:-)

加與列表全新的內容,那麼工作原理如下:

obsList.removeAll(obsList); 
obsList.add(...); //e.g. in a loop... 

obsList.removeAll(obsList); 
FXCollections.copy(obsList, someSourceList) 
+0

我曾試過這樣的事情,但我上面寫道,問題是關於未知的關係不應該發生。 當全部加載到table_a時:與table_b_ 相同時清除全部來自table_a:與table_b相同 –

相關問題