1
我在JavaFx中創建應用程序。現在我有兩個tableviews彼此相鄰:JavaFX:基於其他TableView禁用TableView中的多行
------------------------------------------------------------------------------
| TableView 1 | TableView 2 |
| | |
| | Entry 1 |
| | Entry 2 |
| | Entry 3 |
| | Entry ... |
| | Entry N |
------------------------------------------------------------------------------
我想從TableView中2項複製到的TableView 1,但在同一時間,被禁止已經從TableView中2需要複製的條目(禁用setDisable或類似的行)。我知道如何將項目從一個tableview複製到另一個。問題是,我不知道如何禁用多行,當一個或多個條目已被複制到的TableView 1 我試圖與一個RowFactory,像這樣:
productsInTransaction.setRowFactory(tv -> {
TableRow<Product> row = new TableRow<>();
row.disableProperty().bind(???);
return row;
});
任何幫助,非常感謝!
謝謝!這似乎是正確的解決方案,但是,我想比較條目(在我的情況下是對象)的一個屬性。因此,例如,如果我的TableView包含Person對象,其中Name和Age作爲屬性,我想禁用基於Name(unique)的行。我怎樣才能做到這一點? – 2014-10-28 16:51:25
我現在的答案是「使用[EasyBind框架](https://github.com/TomasMikula/EasyBind)」。你可以做'ObservableList names = EasyBind.map(table2.getItems(),Person :: getName);',然後綁定是'createBooleanBinding(() - > names.contains(row.getItem()。getName )),names,row.itemProperty())' –
2014-10-28 16:57:08
當然,快速和骯髒的方法是重寫'Person'類中的'equals(...)'來比較名稱。當然,對於其他應用程序,您可能需要「equals(...)」的不同語義。 – 2014-10-28 16:58:46