亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為 TableView 創建條件 CellValueFactory?

如何為 TableView 創建條件 CellValueFactory?

HUWWW 2021-10-28 15:40:27
我有一TableView列需要顯示來自我的數據對象的兩個值之一。在下面的 MCVE 中,我有一個Person可能有也可能沒有nickname屬性的對象。這nickname可以是填充的、空的或null.人.java:import javafx.beans.property.IntegerProperty;import javafx.beans.property.SimpleIntegerProperty;import javafx.beans.property.SimpleStringProperty;import javafx.beans.property.StringProperty;public class Person {    private IntegerProperty id = new SimpleIntegerProperty();    private StringProperty firstName = new SimpleStringProperty();    private StringProperty lastName = new SimpleStringProperty();    private StringProperty nickname = new SimpleStringProperty();    public Person(int id, String firstName, String lastName, String nickname) {        this.id.set(id);        this.firstName.set(firstName);        this.lastName.set(lastName);        this.nickname.set(nickname);    }    public int getId() {        return id.get();    }    public IntegerProperty idProperty() {        return id;    }    public void setId(int id) {        this.id.set(id);    }    public String getFirstName() {        return firstName.get();    }    public StringProperty firstNameProperty() {        return firstName;    }    public void setFirstName(String firstName) {        this.firstName.set(firstName);    }    public String getLastName() {        return lastName.get();    }    public StringProperty lastNameProperty() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName.set(lastName);    }    public String getNickname() {        return nickname.get();    }    public StringProperty nicknameProperty() {        return nickname;    }    public void setNickname(String nickname) {        this.nickname.set(nickname);    }}我需要的是一個如果它有一個值CellValueFactory就會使用這個nickname屬性,但是這個人的完整名字和姓氏如果nickname是空的或空的。如何創建條件CellValueFactory?我假設它需要為工廠創建一個新的回調函數,但我不確定它是如何工作的。
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

正如@kleopatra 所暗示的那樣,一種方法是在cellValueFactory. 這是通過Bindings.when(ObservableBooleanValue).


nameCol.setCellValueFactory(features -> {

  var firstName = features.getValue().firstNameProperty();

  var lastName  = features.getValue().lastNameProperty();

  var nickname  = features.getValue().nicknameProperty();


  return Bindings.when(nickname.isEmpty())

      .then(firstName.concat(" ").concat(lastName))

      .otherwise(nickname);

});

該isEmpty()綁定認為null值是空的。


注意:如果 this 的StringExpression值為null,則認為是空的。


查看完整回答
反對 回復 2021-10-28
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號