bas*_*aad 7 javafx tablerow javafx-8
这个问题更进一步,JavaFX:与多个EasyBind映射绑定的BooleanBindings停止了.
我想进一步扩展行工厂:在表1中,产品每行显示一行,因此1个产品对象可能有多行.现在我只想禁用一行,如果表2中的金额等于行的总和.例如:Product(SKU:P1)在table1中有三行(均代表金额1).如果Product2中的Product(SKU:P1)的数量= -2,则需要在table1中禁用此产品对象的2行.一个仍然需要启用,无论三者中的哪一个都无关紧要.
我现在有以下代码:
table1.setRowFactory(tv -> {
TableRow<Product> row = new TableRow<>();
row.disableProperty().bind(Bindings.createBooleanBinding(
() -> row.getItem() != null && (row.getItem().getSKU().startsWith("C") ||
(skuAmountLookup.containsKey(row.getItem().getSKU()) &&
-skuAmountLookup.get(row.getItem().getSKU()) <
amounts[SKUs.indexOf(row.getItem().getSKU())] )),
skuAmountLookup,
row.itemProperty()));
return row;
});
Run Code Online (Sandbox Code Playgroud)
在哪里skuAmountLookup:
skuAmountLookup = table2.getItems().stream().collect(
Collectors.toMap(Product::getSKU, Product::getAmount, (x, y) -> y,
() -> FXCollections.observableHashMap()));
Run Code Online (Sandbox Code Playgroud)
这仅在总金额为表1时禁用行.您可以更改amounts[SKUs.indexOf(row.getItem().getSKU())]为0,当仅存在其中一个产品时,将禁用所有行.
我的问题是:如何更改行工厂,以便考虑另一行的disableProperty?
有关其他信息,请参阅:JavaFX:与多个EasyBind映射和JavaFX 绑定的BooleanBindings :基于其他TableView在TableView中禁用多行.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |