在组合框上使用单元格工厂:
Image myImage1 = new Image("MyImage1.jpg");
Image myImage2 = new Image("MyImage2.jpg");
Image myImage3 = new Image("MyImage3.jpg");
ImageView myImageView = new ImageView();
ComboBox<String> myComboBox = new ComboBox<>();
myComboBox.getItems().addAll("Item1","Item2","Item3");
Map<String, Image> images = new HashMap<>();
images.put("Item1", myImage1);
images.put("Item2", myImage2);
images.put("Item3", myImage3);
myComboBox.setCellFactory(lv -> {
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
}
};
cell.hoverProperty().addListener((obs, wasHovered, isNowHovered) -> {
if (cell.isEmpty()) {
myImageView.setImage(null);
} else {
myImageView.setImage(images.get(cell.getItem());
}
});
return cell ;
});