我試圖展示2維組合框陣列(10 x 10) 並讓它代表一塊板子。 在每個組合框中,我都會選擇一個圖像。 這有效,但唯一的問題是它不顯示選定的圖像。 僅10個組合框中可能有5個組合框顯示選擇圖像。 這一直困擾着我幾天,我無法找到解決方案。 這就是代碼的樣子。 附加信息:(這是一個Gridpane內,在底部的圖片顯示它的外觀)Java:Combobox不顯示所選圖像
for(int i = 0;i<(comboboxarray.length)*8;i=i+8)
{
for(int j = 0;j<comboboxarray[i/8].length;j++)
{
ComboBox box = new ComboBox(objectenlist);
box.setItems(objectenlist);
box.setPrefSize(50, 50);
box.getSelectionModel().select(1);
box.setCellFactory(
new Callback<ListView<ImageView>, ListCell<ImageView>>()
{
@Override public ListCell<ImageView> call(ListView<ImageView> param)
{
final ListCell<ImageView> cell = new ListCell<ImageView>()
{
{
super.setPrefWidth(USE_PREF_SIZE);
}
@Override public void updateItem(ImageView item,
boolean empty)
{
super.updateItem(item, empty);
if (item != null)
{
switch (item.getId()) {
case "MUUR":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/Muur.png"))));
break;
case "EMPTY":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/empty.png"))));
break;
case "DOEL":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/VELDDOEL.png"))));
break;
case "VELD":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/VELD.png"))));
break;
case "KIST":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/KIST.png"))));
break;
case "START":
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/START.png"))));
break;
}
}else{
setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/gui/images/empty.png"))));
}
}
};
return cell;
}
});
comboboxarray[i/8][j] = box;
add(comboboxarray[i/8][j],i , j, 8, 1);
}
}
[示例] [1]