Вы неправильно настраиваете элементы. Вам нужно использовать метод setCellFactory () в выпадающем списке, чтобы элементы списка генерировались правильно, поскольку ожидается, что элементы будут списком соответствующих данных, а не узлами. Объект ListCell может затем вызывать setGraphic (ImageView) для itw и обновлять этот элемент списка до указанного изображения.
Вот пример кода из моего старого проекта, который фактически предназначен дляListView, но будет работать точно так же, как ComboBox:
pieceData = FXCollections.observableArrayList("Boot", "Car", "Dog", "Hat", "Iron",
"Ship", "Thimble", "Wheelbarrow");
pieceSelection.setItems(pieceData);
pieceSelection.setCellFactory(e -> new ListCell<String>() {
private ImageView view = new ImageView();
@Override
public void updateItem(String name, boolean empty) {
super.updateItem(name, empty);
if(empty) {
setGraphic(null);
}
else {
view.setImage(new Image("whatever the filepath to your image is"));
// Add other set up for ImageView dimensions etc
setGraphic(view);
}
}
});
Имейте в виду, что при этом отображаются только изображения, потому что метод setText (String) должен вызываться для отображения любого текста.
Также, как говорилось в kleopatra, вы должны прочитать базовое руководство по JavaFX, поскольку этот тип вещей хорошо документирован и относительно прост.