【发布时间】:2018-02-24 02:43:51
【问题描述】:
我有一个简单的User 类,它包含两个属性:
public class User {
private final StringProperty lastName;
private final StringProperty firstName;
public User() {
lastName = new SimpleStringProperty("");
firstName = new SimpleStringProperty("");
}
public User(
String lastName,
String firstName
) {
this.lastName = new SimpleStringProperty(lastName);
this.firstName = new SimpleStringProperty(firstName);
}
public String getFirstName() { return firstName.get(); }
public String getLastName() { return lastName.get(); }
public void setFirstName(String firstName) { this.firstName.set(firstName); }
public void setLastName(String lastName) { this.lastName.set(lastName); }
}
我创建了一个带有 ComboBox 的窗口,其中包含 User 项:
public class WindowController {
@FXML
private ComboBox<User> usersComboBox;
public void setUserList(ObservableList<User> userList) { }
}
我希望setUserList 将userList 绑定到usersComboBox,这样userList 中的每个u 的ComboBox 的项目都是u.firstName.get() + " " + u.lastName.get()。每次在 userList 中添加、删除或修改 User 时,ComboBox 必须刷新其项目。
我已经阅读了有关 JavaFX 中的绑定的信息,但我找不到如何做到这一点。推荐的方式是什么?
【问题讨论】:
-
您不需要绑定任何东西:只需将用户列表(如果“修改”意味着更改用户属性,则使用提取器)设置为组合项目并安装自定义 cellfactory(或配置为转换器)。无论如何,请阅读stackoverflow.com/help/mcve并采取相应措施。
-
您阅读帮助页面了吗?如果是这样,您为什么不提供描述的 mcve?真的希望 me 为 you 写它吗?也许,一旦地狱结冰……
标签: java javafx data-binding