【问题标题】:JavaFX: display text instead of boolean value (true/false)JavaFX:显示文本而不是布尔值(真/假)
【发布时间】:2016-10-17 15:41:12
【问题描述】:

我在JavaFX 中使用tableview 来显示List<Contact>

对于控制器的初始化功能,tableview列绑定到List<Contact>如下:

sprintName.setCellValueFactory(new PropertyValueFactory<Contact, String>("name"));
importStatus.setCellValueFactory(new PropertyValueFactory<Contact, Boolean>("imported"));
enddate.setCellValueFactory(new PropertyValueFactory<Contact, String>("endDate"));

但是,我想为列 imported 而不是 true/false 显示文本 imported/new

是否可以在JavaFX 或我必须将imported 的类型更改为String

【问题讨论】:

    标签: java javafx tableview


    【解决方案1】:

    使用单元格工厂(除了单元格值工厂):

    importStatus.setCellFactory(tc -> new TableCell<Contact, Boolean>() {
        @Override
        protected void updateItem(Boolean item, boolean empty) {
            super.updateItem(item, empty);
            setText(empty ? null :
                item.booleanValue() ? "imported" : "new");
        }
    });
    

    有关单元格呈现机制的一般信息,请参阅Cell class documentation

    【讨论】:

    • 对不起,我的回复晚了,我尝试了你的方法,但收到另一个错误:The type of setCellValueFactory(Callback&lt;CellDataFeatures&lt;S,T&gt;,ObservableValue&lt;T&gt;&gt;) is erroneous where S,T are type-variables: S extends Object declared in class TableColumn T extends Object declared in class TableColumn incompatible types: bad return type in lambda expression &lt;anonymous TableCell&lt;Contact,Boolean&gt;&gt; cannot be converted to ObservableValue&lt;Boolean&gt;
    • @ti.voodoo 你有没有把我调用的方法(setCellFactory(...))和你已经拥有的方法(setCellValueFactory(...))混淆了。正如我在答案中所说,你需要两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多