我有以下TableView(JavaFX 2.2.45):
Period Number Number Number
---------------------------------
1 x x x
2 x x x
3 x x x
.
.
24 x x x
句点列表示一天中的小时。数字列是可编辑的。我希望能够在当前小时之前和之前禁用行。因此,例如,如果是10:15我想禁用第1行到第11行。如何使用当前小时(易于计算并放入变量)来完成此操作?
答案 0 :(得分:0)
最后,TableView.setRowFactory()
可以正常使用。我将这个类作为参数添加到setRowFactory
(为了简洁省略了泛型):
public class LockableRow implements Callback {
@Override
public TableRow call(TableView tableView) {
return new TableRow() {
@Override
protected void updateItem(LockableModel item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
if (isRowDisabled(tableView, getIndex())) {
setDisable(true);
} else {
setDisable(false);
}
}
}
};
}
private boolean isRowDisabled(TableView tableView, int thisRow) {
ObservableList rows = tableView.getItems();
return (thisRow< rows.size() && rows.get(thisRow).isDisabled());
}
}
此处,支持表视图的模型是LockableModel
,它实现isDisabled()
。