0

我有以下 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 行。如何使用当前时间(很容易计算并放入变量)来完成此操作?

4

1 回答 1

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().

于 2013-10-29T19:27:25.187 回答