0
我有一個TableView
和定製MyTableCell extends CheckBoxTreeTableCell<MyRow, Boolean>
,根據該電池是@Overridden
的updateItem
方法:JavaFX的:UDPATE TableCell的
@Override
public void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
if(!empty){
MyRow currentRow = geTableRow().getItem();
Boolean available = currentRow.isAvailable();
if (!available) {
setGraphic(null);
}else{
setGraphic(super.getGraphic())
}
} else {
setText(null);
setGraphic(null);
}
}
我有一個ComboBox<String>
在那裏我有一些項目,當我改變的價值組合框我想根據選定的值設置複選框的可見性。所以我有一個聽衆:
comboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue.equals("A") || newValue.equals("S")) {
data.stream().filter(row -> row.getName().startsWith(newValue)).forEach(row -> row.setAvailable(false));
}
});
- 的
data
是ObservableList<MyRow>
- 這只是一個例子,我的代碼的簡化版本
當我改變ComboBox中表的價值chekboxes不會消失,直到我滾動或單擊該單元格。有一個「溶劑」可以撥打table.refresh();
,但我不想刷新整個表格,因爲我只想刷新一個單元格。所以我試圖添加一些偵聽器來觸發updateItem,但是我在每次嘗試時都失敗了。你有什麼想法如何觸發一個單元格的更新機制,而不是整個表格?
一見鍾情,這是一個很好的解決方案,但我得到'RuntimeExceoption':綁定值不能在'super.updateItem設置(...)':setGraphic(null)' – Sunflame
@Sunflame你有'graphicProperty()。unbind()'行嗎?我不明白你在那裏如何得到那個例外。 –
是的,但我解決了''graphicProperty()。unbind()'與'super.updateItem(...)',所以它工作正常,非常感謝你:) – Sunflame