如何设置粗体显示的true在TableView中JavaFX的一些列

问题描述 投票:0回答:1

我有TableView<TypeReport> tv和列

tc_name.setCellValueFactory(new PropertyValueFactory<>("name"));

我想行大胆,如果日期tc_name的细胞不" "开始。

我用:

tv.setRowFactory(new Callback<TableView<TypeReport>, TableRow<TypeReport>>() {
    @Override
    public TableRow<TypeReport> call(TableView<TypeReport> param) {
        return new TableRow<TypeReport>() {
            @Override
            protected void updateItem(TypeReport item, boolean empty) {
                if (item==null) {
                    setStyle("");
                } else  {
                    String res=item.getName();
                    if (res.startsWith(" ")){}
                    else
                        setStyle("-fx-font-weight: bold");
                }
            }
        };
    }
});

当我打开应用程序,需要排很大胆,但是当我滚动,一些不同的行大胆。

javafx
1个回答
2
投票

您需要删除的样式行,其项目名称与" "开始。 (请注意,您还需要调用super.updateItem(...)):

@Override
protected void updateItem(TypeReport item, boolean empty) {
    super.updateItem(item, empty);
    if (item==null) {
        setStyle("");
    } else  {
        String res=item.getName();
        if (res.startsWith(" ")) {
            setStyle("");
        } else
            setStyle("-fx-font-weight: bold");
    }

}

或者,等价(但用更少的代码):

@Override
protected void updateItem(TypeReport item, boolean empty) {
    super.updateItem(item, empty);
    if (item==null || item.getName().startsWith(" ")) {
        setStyle("");
    } else  {
        setStyle("-fx-font-weight: bold");
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.