我有一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,則認為是空的。
添加回答
舉報
0/150
提交
取消