我有一个组合框,其中包含一个Ejercicio类对象列表(Ejercicio包含id,name ..) .

ComboBox lstPrueba=new ComboBox<Ejercicio>();
//I get a list of Ejercicio from DAO an add all to the combobox
lstPrueba.getItems().addAll(new EjercicioDAO().obtenListaEjercicios("something"));

我需要所有组合框行都有一个ImageView(png图像名称基于Ejercicio id,因为png名称等于Ejercicio id)加上一个标签(带有Ejercicio的名字) .

我尝试但不工作:

class FormatoCelda extends ListCell<Ejercicio> {

    @Override
    public void updateItem(Ejercicio item, boolean empty) {
        super.updateItem(item, empty);
        Image img = new Image(getClass().getResourceAsStream("/img/"+String.valueOf(item.getId() + ".png")));
        ImageView imgv = new ImageView(img);
        if (item != null) {
            setGraphic(imgv);
            setText(item.getNombre());

        } else {
            setGraphic(null);
        }
    }
}

并在初始化方法:

lstPrueba = new ComboBox<>();
    lstPrueba.getItems().addAll(new EjercicioDAO().obtenListaEjercicios("something"));

    lstPrueba.setCellFactory(new Callback<ListView<Ejercicio>, ListCell<Ejercicio>>() {
        @Override
        public ListCell<Ejercicio> call(ListView<Ejercicio> list) {
            return new FormatoCelda();
        }
    }
    );

我是JavaFX的新手 . 我在Internet和StackOverFlow上搜索但是我找不到一个很好的例子来填充像图像标签这样的控制列表类型 .

对不起,我的英语不是很好 .