2013-12-13 59 views
1

我對JavaFX庫有一個特別的問題,可能會揭示出我對JavaFX-Framework的一般理解有缺陷。CheckBoxTableCell如何傳播回來?

讓我們假設有一個稱爲Entity的實體類,它有一個BooleanProperty,名爲checked。此外,讓有一個表列如下:

TableColumn<Entity,Boolean> checkBoxColumn; 

然後,設定器的單元值工廠具有以下特徵:

setCellValueFactory(Callback<TableColumn.CellDataFeatures<Entity,Boolean>,ObservableValue<Boolean>> value) 

下面的代碼應足以使與結合複選框的柱到相應的實體對象的checked屬性:

setCellValueFactory(new PropertyValueFactory<Entity, Boolean>("checked")); 
checkBoxColumn.setCellFactory(CheckBoxTableCell.forTableColumn(checkBoxColumn)); 

我的最簡單形式的問題:如何做一個CheckBoxTableCell請考慮單元價值工廠返回ObservableValue<Boolean>而不是例如BooleanProperty的事實來設置支持屬性的值?

我可以想象這樣做的唯一方法是CheckBoxTableCell動態檢查單元值工廠返回的引用是否實際上是對屬性的引用,然後將此屬性綁定到checkBox的checked屬性。

回答

1

我怎麼能想象這是如何實現的唯一途徑是, CheckBoxTableCell動態檢查單元格的值工廠是否通過 返回的引用實際上是一個屬性的引用,然後 結合這個屬性來檢查checkBox的屬性。

這正是它所做的。沒有什麼複雜的:只需使用簡單的instanceof檢查。源代碼是here,如果你有足夠的興趣(查看updateItem(...)方法)。