我正在尝试更改arraylist中项目的值。我似乎无法正常工作。我对如何真正地提出这个问题一无所知。代码非常广泛(或者至少在我的书中),因此我无法真正展示所有代码。但是,如果我知道当前索引,该如何更改ItemName?

 currentIndex.setItemName(newItemName);


CurrentIndex是一个整数,它告诉我我位于哪个索引,ItemName是我的数组列表中的字符串。在尝试设置ItemName之前应该先获取它吗?像这样

InventoryItem.getItemName();
currentIndex.setItemName(newItemName);


这也不起作用。

编辑:我被要求显示更多代码。这是我的动作监听器中弹出的面板

 modifyButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JTextField xField = new JTextField(15);
            JTextField yField = new JTextField(15);
            JTextField zField = new JTextField(15);

            JPanel myPanel = new JPanel();
            myPanel.add(new JLabel("Item Name:"));
            myPanel.add(xField);

            myPanel.add(Box.createVerticalStrut(15)); // a spacer
            myPanel.add(new JLabel("Number in inventory:"));
            myPanel.add(yField);

            myPanel.add(Box.createVerticalStrut(15)); // a spacer
            myPanel.add(new JLabel("Unit Price:"));
            myPanel.add(zField);
            int result = JOptionPane.showConfirmDialog(null, myPanel,
                    "Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
            if (result == JOptionPane.OK_OPTION) {

                String newItemName = String.valueOf(xField);
                String text1 = yField.getText();
                String newInventoryAmount = String.valueOf(text1);
                int newAmount = Integer.parseInt(newInventoryAmount);
                String text2 = zField.getText();
                String newUnitPrice = String.valueOf(text2);
                double newPrice = Double.parseDouble(newUnitPrice);
                inventory.get(currentIndex).setItemName(newItemName);
                inventory.get(currentIndex).setInStock(newAmount);
                inventory.get(currentIndex).setUnitPrice(newPrice);


            }
        }

}

);

最佳答案

ìnt没有方法setItemName(或根本没有任何方法,因为它是原始的,不是对象)。

尝试yourArrayList.get(currentIndex).setItemName(newItemName);

它在列表的所需元素上调用setItemName

编辑:要解决您的新问题,将String newItemName = String.valueOf(xField);替换为

String newItemName = xField.getText();


我相信这是您想要做的。

10-08 08:15