您应该为 ComboBox 提供一个数据模型,它存储动物的名称和价格,例如 Animal 类的实例。
publicclassAnimal{
private String name;
privateDouble price;
publicDouble getPrice() {
return price;
}
public String getName() {
return name;
}
public Animal(String name, Double price) {
this.name = name;
this.price = price;
}
}
然后在您的 ComboBox 中,您可以显示这些 Animal 实例:
ComboBox<Animal> comboBox = new ComboBox<Animal>();
comboBox.setItems(FXCollections.observableArrayList(
new Animal("Dog", 30.12),
new Animal("Cat", 23.23),
new Animal("Bird", 15.0)));
comboBox.valueProperty().addListener((obs, oldVal, newVal) ->
System.out.println("Price of the " + newVal.getName() + " is : " + newVal.getPrice()));
唯一剩下的就是在 ComboBox 上显示动物的名称,而不是对象本身。为此,您可以使用例如 StringConverter :
comboBox.setConverter(new StringConverter<Animal>() {
@OverridepublicString toString(Animal object) {
returnobject.getName();
}
@Overridepublic Animal fromString(Stringstring) {
returnnull;
}
});
值改变时,输出如下:
Price of the Cat is : 23.23Price of the Dog is : 30.12Price of the Bird is : 15.0
侵删