JavaFX:基于其他TableView在TableView中禁用多行

时间:2014-10-28 14:16:22

标签: javafx tableview

我正在JavaFx中创建一个应用程序。现在我有两个彼此相邻的表格视图:

------------------------------------------------------------------------------
| TableView 1                        |  TableView 2                          |  
|                                    |                                       |
|                                    |  Entry 1                              |
|                                    |  Entry 2                              |
|                                    |  Entry 3                              |
|                                    |  Entry ...                            |
|                                    |  Entry N                              |
------------------------------------------------------------------------------

我想将TableView 2中的项目复制到TableView 1,但同时,需要禁用从TableView 2复制的条目(使用setDisable或类似的东西禁用该行)。我知道如何将项目从一个tableview复制到另一个tableview。问题是当一个或多个条目被复制到TableView 1时,我不知道如何禁用多行。 我尝试使用RowFactory,如下所示:

productsInTransaction.setRowFactory(tv -> {
      TableRow<Product> row = new TableRow<>();
      row.disableProperty().bind(???);
      return row;
});

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我不太确定您想要的逻辑,但如果您的行工厂附加到表1,而您在表2中存在该项时禁用该行,请执行:< / p>

row.disableProperty().bind(Bindings.createBooleanBinding(() -> 
    table2.getItems().contains(row.getItem()), table2.getItems(), row.itemProperty()));