[英]Java get UserName from UserList and setItems ComboBox
我有这个:
@FXML
private ChoiceBox<String> choiseData;
ObservableList<String> choiseUserList = FXCollections.observableArrayList();
ObservableList<User> userList = FXCollections.observableArrayList();
AdminSQL sql = new AdminSQL();
userList = sql.getAllUser();
for (User u : userList)
choiseUserList.add(u.getUserLogin());
choiseData.setItems(choiseUserList);
我不喜欢这两个列表和循环。 我想知道您是否只能直接从userList列表中下载用户的登录名并将其放置在ChoiseBox中
班级用户:
private IntegerProperty userLp;
private StringProperty userLogin;
private StringProperty userRule;
最有可能的是,您不想将ChoiceBox项作为从真实项一次映射(以某种方式)的列表,因为这样做有一些缺点:
示例代码段:
ChoiceBox<User> choiceBox = new ChoiceBox<>(getUsers());
// from your snippet, AdminSQL already returns the list as
// an ObservableList, so you can set it directly as provided
// new ChoiceBox<>(sql.getAllUsers());
StringConverter<User> converter = new StringConverter<>() {
@Override
public String toString(User user) {
return user != null ? user.getUserLogin() : "";
}
@Override
public User fromString(String userLogin) {
// should never happen, choicebox is not editable
throw new UnsupportedOperationException("back conversion not supported from " + userLogin);
}
};
choiceBox.setConverter(converter);
使用Java 8流
choiseData.getItems().addAll(userList.stream().map(User::getUserLogin()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.