这是旧发票示例的编辑。 我有两张桌子A和B, table_A用于通过搜索加载所有项目或项目,然后选择并单击添加按钮将其添加到table_B。 table_B先前在发票中加载旧保存的项目。 *奇怪的是当我点击All Button所有按钮加载到table_A和table_B时!加上旧发票的旧保存项目。 *当我删除加载旧发票项目的行和将这些项目设置为table_B的行时,每件事情都可以正常工作。所以这部分的问题我希望有人向我解释。 左边是table_A,右边是table_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 :(得分:0)
假设ObservableList obsList是TableView的基础列表。
然后
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)