您可以创建一个如AirPort
带班ID
和name
成员以及Combo@R_188_2419@
该显示这些对象:Combo@R_188_2419@<AirPort>
。
AirPort
班级:
public class AirPort {
private int ID;
private String name;
public AirPort(int id, String name) {
this.ID = id;
this.name = name;
}
public int getID() { return ID; }
public String getName() { return name; }
}
从数据库中获取项目并创建Combo@R_188_2419@
:
// Fill the list from the DataBase
ObservableList<AirPort> airports = FXCollections.observableArrayList();
airports.addAll(new AirPort(0, "Heathrow"),
new AirPort(1, "Frankfurt"),
new AirPort(2, "NewYork"));
Combo@R_188_2419@<AirPort> combo = new Combo@R_188_2419@<>();
combo.setItems(airports);
最后要显示对象的名称,您可以使用例如StringConverter
:
combo.setConverter(new StringConverter<AirPort>() {
@Override
public String toString(AirPort object) {
return object.getName();
}
@Override
public AirPort fromString(String string) {
return combo.getItems().stream().filter(ap ->
ap.getName().equals(string)).findFirst().orElse(null);
}
});
然后,当值更改时,您将获得AirPort
包含所需ID的对象:
combo.valueproperty().addListener((obs, oldval, newval) -> {
if(newval != null)
System.out.println("Selected airport: " + newval.getName()
+ ". ID: " + newval.getID());
});