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