带有ImageView + Label的JavaFX Combobox行

时间:2014-09-16 23:42:17

标签: combobox imageview javafx-8

我有一个组合框,其中包含一个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搜索,但是我找不到一个很好的例子来填充一个控制列表类型,例如带有图像+标签的组合框。

抱歉,我的英语不是很好。

0 个答案:

没有答案