如何使用对象列表中的字符串填充 ComboBox?
How to populate ComboBox with Strings from a list of objects?
我有一个包含实例变量 String countryName;
的 Country
个对象的列表。
我不知道如何用国家/地区对象列表填充 ComboBox
。
我尝试通过创建另一个名为
的列表来使用解决方法来做到这一点
ObservableList<String> listCountriesString = FXCollections.observableArrayList();
并遍历它并将每个实例变量 countryName
添加到新列表中:
private ObservableList<Country> listCountries = FXCollections.observableArrayList();
for (Country country : listCountries) {
listCountriesString.add(country.getCountryName());
}
如何将 ComboBox 与我的 Country
对象一起使用,并且只显示国家/地区名称?
@FXML
ComboBox<Country> comboBoxCountry;
public class Country {
private int countryId;
private String countryName;
private String createDate;
private String lastUpdate;
public Country(int countryId, String countryName, String createDate, String lastUpdate) {
this.countryId = countryId;
this.countryName = countryName;
this.createDate = createDate;
this.lastUpdate = lastUpdate;
}
... getters and setters
它非常简单,当然是 documentation 的一部分。
首先,您需要创建一个 cellFactory
来负责设置 ComboBox
项的文本。
Callback<ListView<Country>, ListCell<Country>> cellFactory = lv -> new ListCell<Country>() {
@Override
protected void updateItem(Country item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? "" : item.getCountryName());
}
};
然后像这样使用它:
comboBoxCountry.setButtonCell(cellFactory.call(null));
comboBoxCountry.setCellFactory(cellFactory);
然后您可以像这样添加 Countries
:
comboBoxCountry.getItems().add(new Country("Germany"...));
祝你好运!
我有一个包含实例变量 String countryName;
的 Country
个对象的列表。
我不知道如何用国家/地区对象列表填充 ComboBox
。
我尝试通过创建另一个名为
的列表来使用解决方法来做到这一点ObservableList<String> listCountriesString = FXCollections.observableArrayList();
并遍历它并将每个实例变量 countryName
添加到新列表中:
private ObservableList<Country> listCountries = FXCollections.observableArrayList();
for (Country country : listCountries) {
listCountriesString.add(country.getCountryName());
}
如何将 ComboBox 与我的 Country
对象一起使用,并且只显示国家/地区名称?
@FXML
ComboBox<Country> comboBoxCountry;
public class Country {
private int countryId;
private String countryName;
private String createDate;
private String lastUpdate;
public Country(int countryId, String countryName, String createDate, String lastUpdate) {
this.countryId = countryId;
this.countryName = countryName;
this.createDate = createDate;
this.lastUpdate = lastUpdate;
}
... getters and setters
它非常简单,当然是 documentation 的一部分。
首先,您需要创建一个 cellFactory
来负责设置 ComboBox
项的文本。
Callback<ListView<Country>, ListCell<Country>> cellFactory = lv -> new ListCell<Country>() {
@Override
protected void updateItem(Country item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? "" : item.getCountryName());
}
};
然后像这样使用它:
comboBoxCountry.setButtonCell(cellFactory.call(null));
comboBoxCountry.setCellFactory(cellFactory);
然后您可以像这样添加 Countries
:
comboBoxCountry.getItems().add(new Country("Germany"...));
祝你好运!