首页 > 解决方案 > 将单个数组列表项添加到单个磁贴

问题描述

我目前正在尝试将数组列表中的单个项目放入库存 GUI 中的单个图块中。所有图块都已设置好,我可以在控制台行中单独显示每个数组列表项。

这是简单的图形用户界面: 使用瓷砖的简单 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]
    }

如何使用 ? 将每个人retString放入每个图块中itemTile[i]

我对编码和 Java 比较陌生,所以我偷偷怀疑我把事情复杂化了。

标签: javaarraysarraylist

解决方案


itemTile如果您想在类似的方法中为数组赋值displayItems2,有两种可能性:1)将引用传递给itemTileintodisplayItems2或 2)创建itemTile类成员。

示例 1(传递参考):

private void displayItems2(HBox itemTile) {
    // [...]
    itemTile[i] = descs.get(i);
}       

示例 2(类成员):

class MyClass {

    // [...]
    HBox itemTile;

    // [...]
    private void displayItems2() {
       // [...]
       itemTile[i] = descs.get(i);
    }
}

推荐阅读