san*_*oxj 6 java combobox javafx arraylist
让我们说我有一节课:
public class Dummy {
private String name;
private String someOtherProperty;
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个类的ArrayList ArrayList<Dummy> dummyList;
我可以创建一个带有Object name属性作为选择选项的JavaFX ComboBox,而无需ArrayList<String>使用对象名称创建新的吗?
伪代码:
ObservableList<Dummy> dummyO = FXCollections.observableArrayList(dummyList);
final ComboBox combo = new ComboBox(dummyO); // -> here dummyO.name?
Run Code Online (Sandbox Code Playgroud)
(可选)理想情况下,虽然应该显示名称,但是当选择了一个选项时,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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4372 次 |
| 最近记录: |