JavaFX:使用Object属性的ComboBox
可以说我有一堂课:
public class Dummy { private String name;
private String someOtherProperty;
public String getName() {
return name;
}
}
我有一个此类的ArrayList ArrayList<Dummy> dummyList;
是否可以使用对象名称属性作为选择选项来创建JavaFX ComboBox,而无需ArrayList<String>
使用对象名称创建新的JavaFX
ComboBox ?
伪代码:
ObservableList<Dummy> dummyO = FXCollections.observableArrayList(dummyList);final ComboBox combo = new ComboBox(dummyO); // -> here dummyO.name?
(可选)理想情况下,虽然应该显示名称,但在选择了一个选项后,该名称combo.getValue()
应该返回给我所选的Dummy的引用,而不仅仅是名称。那可能吗?
回答:
您可以使用自定义方式cellFactory
来显示适合您需求的项目:
ComboBox<Dummy> comboBox = ...Callback<ListView<Dummy>, ListCell<Dummy>> factory = lv -> new ListCell<Dummy>() {
@Override
protected void updateItem(Dummy item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? "" : item.getName());
}
};
comboBox.setCellFactory(factory);
comboBox.setButtonCell(factory.call(null));
以上是 JavaFX:使用Object属性的ComboBox 的全部内容, 来源链接: utcz.com/qa/415891.html