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

回到顶部