Javafx CheckBoxTableCell通用

时间:2016-06-02 14:45:14

标签: generics javafx-8

我是JavaFX的新手,并且在创建TableView包装器时遇到了一些问题。创建一个Tableview应该只是提供数据和一些背景信息一样简单,我在我的模型的class.fields和方法上做了一些注释。

@AsTableColumn(text = "Birthday", index = 2)
private Date birtyday;

@AsTableColumn(text = "Day of death", index = 3)
private Date deathDay;

@AsTableColumn(text = "Alive?", index = 4)
public boolean isAlive() {
    return this.getDeathDay().compareTo(new Date()) > 0;
}

列使用以下函数:

    private static <S, T> TableColumn<S, T> createTableColumn(Class<T> type, String fieldName, String columnHeader, String index) {
    TableColumn<S, T> col = new TableColumn<S, T>(columnHeader);
    col.setCellValueFactory(cellData -> {
        try {
            Object o = getAttribute(fieldName, cellData.getValue());
            // Erzeuge eine Property, die das Attribut enthält
            @SuppressWarnings("unchecked")
            SimpleObjectProperty<T> property = new SimpleObjectProperty<T>((T) o);
            return property;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    });
    if (type.equals(Boolean.TYPE))
        col.setCellFactory(new Callback<TableColumn<S, T>, TableCell<S, T>>() {
            @Override
            public TableCell<S, T> call(TableColumn<S, T> p) {
                return new CheckBoxTableCell<S, T>();
            }
        });
    col.setId(index);
    return col;
}

尽管存在一个事实,但它的作用很好:阅读&#34; true&#34;和&#34;假&#34;在表中很烦人。我想使用CheckBoxTableCell,但我这样做的方式不会工作。所有复选框都是空的。我知道我需要通过.forTableColumn()来指定布尔值的来源,但我尝试的所有内容都存在泛型问题。与TableColumn<S,T>不同的是TableColumn<S,Boolean>

获得一些帮助会很棒。

0 个答案:

没有答案