您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaFX ComboBox-显示文本,但在选择时返回ID

JavaFX ComboBox-显示文本,但在选择时返回ID

您可以创建一个AirPort带班IDname成员以及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());
});
java 2022/1/1 18:48:39 有416人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶