【发布时间】:2018-06-11 16:45:54
【问题描述】:
我有一个由 10 个组合框组成的数组列表。我想用 n 个图像视图加载每个组合框。
我从一个给我正确数据的类中得到我需要的数据。 您在代码中找到的arraylist 的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 Image
代码工作并将我需要的图像插入我的组合框,问题是它每次都会向每个组合框添加更多图像。
例如:第一个组合框正确加载前 5 个骰子。当我添加其他 5 个骰子(应该只添加到第二个组合框)时,它们会同时添加到第一个和第二个组合框,我会得到两组相同的元素(这一直持续到最后)。
我尝试在第二个周期之前更改我的代码添加options.clear(),因此选项 ObservableList 被重置,我可以从 0 添加我的元素,然后将它们添加到我的h 组合框中。
问题是我实际上没有插入 imageView。
我也尝试过移动
listaComboBox.get(h).setItems(options);
listaComboBox.get(h).setCellFactory(c -> new StatusListCell());
在第二个for 循环中,但我仍然一无所获。
有什么想法吗?我已经尝试了很长时间,但我仍然无法弄清楚真正的问题是什么。
【问题讨论】: