我目前正在尝试将数组列表中的各个项目放入库存 GUI 中的各个图 block 中。所有图 block 均已设置,我可以在控制台行中单独显示每个数组列表项。
这是简单的 GUI:
这是我迄今为止的尝试。
HBox itemTile[] = new HBox[31];
for (int i = 0; i < 30; i++) {
Button deleteButton = new Button("Delete Item");
deleteButton.setOnAction((ActionEvent event) -> {
displayItems2(); //temp info to console - delete item code to be added
JOptionPane.showMessageDialog(null, "Item has been deleted", null, 1);
});
itemTile[i] = new HBox(new Label("Item: " + i + " "));
itemTile[i].setStyle("-fx-border-color: black;");
itemTile[i].setPadding(new Insets(5));
itemTile[i].getChildren().add(deleteButton);
itemTile[i].setAlignment(Pos.CENTER_LEFT);
itemTile[i].setStyle("-fx-background-color: #e5efff; -fx-border-color: black;");
this.getChildren().add(itemTile[i]);
}
}
private void displayItems2(){
this.getChildren().removeAll(this.getChildren());
displayInvStructure();
ArrayList<String> descs = InventoryManager.getInstance().getItemDescriptions();
for (int i = 0; i < descs.size(); i++) {
String retString = descs.get(i);
System.out.println("Array item is = " + " " + i + " " + retString);
}
//If i = itemTile[i]
//Add retString to itemTile[i]
}
如何使用 itemTile[i]
将每个单独的 retString
放入每个图 block 中?
我对编码和 Java 比较陌生,所以我偷偷怀疑我把事情搞得太复杂了。
最佳答案
如果您想在 displayItems2
等方法中为 itemTile
数组赋值,有两种可能性:1) 传递对 itemTile
的引用code> 到 displayItems2
或 2) 使 itemTile
成为类成员。
示例 1(传递引用):
private void displayItems2(HBox itemTile) {
// [...]
itemTile[i] = descs.get(i);
}
示例 2(类(class)成员):
class MyClass {
// [...]
HBox itemTile;
// [...]
private void displayItems2() {
// [...]
itemTile[i] = descs.get(i);
}
}
关于java - 将单个数组列表项添加到单个图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50314336/