我有一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
提交
取消