У меня есть arraylist, сделанный из 10 Comboboxes.Я хотел бы загрузить каждый комбинированный список с n просмотрами изображений.
Я получаю нужные мне данные из класса, который дает мне правильные данные.Массив arraylist, который вы найдете в коде, представляет собой «симуляцию» различных кубиков друг над другом, создавая разные столбцы.Например, у меня есть максимум 10 столбцов, каждый из которых состоит из n кубиков.
Вот код:
//LOADING DICES INTO MY COMBOBOXES
//List used to load strings
ObservableList<String> options = FXCollections.observableArrayList();
//Arraylist made of arraylist containing the data I need
ArrayList<ArrayList<Dice>> roundTrackData = gameManager.roundTrack.getDices();
System.out.println(roundTrackData);
for(int h=0; h<roundTrackData.size();h++){
System.out.println(" h Value:" + h);
ArrayList<Dice> testing = roundTrackData.get(h);
System.out.println(" Testing:" + testing);
System.out.println(" Testing size:" + testing.size());
for(int u=0; u<testing.size();u++){
System.out.println(" Inside cicle ");
String color = Character.toString(testing.get(u).getColor());
String value = testing.get(u).getValue().toString();
String diceRound = value+color+".png";
options.add(diceRound);
//listaComboBox is an array list containing 10 comboboxes
listaComboBox.get(h).setItems(options);
listaComboBox.get(h).setCellFactory(c -> new StatusListCell());
System.out.println("Dice color "+ color);
System.out.println("Dice value"+ value);
}
}
Класс StatusListCell:
public class StatusListCell extends ListCell<String> {
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
System.out.println("IT'S NULL");
setGraphic(null);
setText(null);
if (item != null) {
System.out.println("IT'S NOT NULL!");
ImageView imageView = new ImageView(new Image(item));
imageView.setFitWidth(40);
imageView.setFitHeight(40);
setGraphic(imageView);
setText("a");
}
}
}
Я разработал свой кодпосле этого вопроса: Изображение JavaFX ComboBox
Код работает и вставляет нужные мне изображения в мои списки, проблема в том, что он добавляет каждый раз больше изображений в каждый список.
Например : первый комбинированный список правильно загружает первые 5 кубиков.Когда я добавляю другие 5 кубиков (которые должны быть добавлены только во второй комбинированный список), они добавляются как к первому, так и ко второму комбинированным спискам, и я получаю две идентичные группы элементов (это продолжается до конца).
Я пытался изменить свой код, добавив options.clear()
перед вторым циклом, поэтому параметры ObservableList сбрасываются, и я могу добавить свои элементы с 0, а затем добавить их в свой h
комбинированный список.
Проблема в том, что я фактически не вставляю imageView.
Я также пытался вывести
listaComboBox.get(h).setItems(options);
listaComboBox.get(h).setCellFactory(c -> new StatusListCell());
из второго for
цикла, но я все еще ничего не получаю.
Есть идеи, в чем проблема?Я так долго пытался, но до сих пор не могу понять, в чем реальная проблема.