【发布时间】:2013-12-08 18:00:08
【问题描述】:
我正在尝试更改我的数组列表中项目的值。我似乎无法让这个工作。我不知道如何真正问这个问题。代码非常广泛(或者至少在我的书中),所以我无法真正展示所有这些。但是,如果我知道当前索引,如何让它更改 ItemName?
currentIndex.setItemName(newItemName);
CurrentIndex 是一个 int,它告诉我我在哪个索引,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);
}
}
}
);
【问题讨论】:
-
你的
ArrayList叫什么名字? -
我也尝试过
inventory.set(itemName = newItemName);之类的方法,但似乎找不到 itemName。我认为那是因为它在一个单独的班级中? -
public static ArrayList<InventoryItem> inventory = new ArrayList<>();