В настоящее время я работаю над проектом GUI по простой системе POS (Point Of Sale). У меня есть l oop для добавления в JButton для всех пунктов меню, однако я не могу найти точный индекс моего элемента в моем ActionListener. Код, как показано ниже
for (int i = 0; i < food.Food.size(); i++) {
int temp = i;
name = food.Food.get(temp).name;
foodname = new JButton(String.format("<html> %s <br/> RM %.2f", food.Food.get(temp).name, food.Food.get(i).price));
foodname.setFont(standard);
foodname.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
quantity = getInt();
if (quantity != 0) {
if (orderRecord.orderlist.size() == 0)
orderRecord.addOrder(new OrderInfo(food.Food.get(temp).name, quantity));
else {
for (int i = 0; i < orderRecord.orderlist.size(); i++) {
if (name.equals(orderRecord.orderlist.get(i).getName())) {
orderRecord.orderlist.get(i).quantity += quantity;
}
System.out.println(orderRecord.orderlist.get(i).name);
System.out.println(orderRecord.orderlist.get(i).quantity);
}
}
orderRecord.orderRecordGUI();
revalidate();
}
}
});
}
(несколько строк предназначены для меня, чтобы проверить, работает ли мой код, игнорируйте любые System.out.println
)
У меня проблема в этой строке
orderRecord.addOrder(new OrderInfo(food.Food.get(temp).name, quantity));
, где я хочу сохранить то, что пользователь заказал, в моем orderRecord.
Каждый раз, когда я пытался что-то заказать, orderRecord распознает только мой первый щелчок по пункту меню и не будет изменять его соответствующим образом после этого. Например, я сначала заказал «Мороженое» и сказал, что «Мороженое» находится в индексе 2
из food.Food
, temp
после этого останется неизменным на 2, в результате чего я не смогу заказать другой товар (мой список заказов будет иметь все "Ice = Cream")
Попробовали добавить int temp
(как показано в коде) для определения индекса пункта меню (который работает с JCheckBox, но не с JButton). У меня также есть строка name
, содержащая пункт меню temp
. Все они закончились одной и той же проблемой
Мне нужно решение или другой способ сделать это, если есть, спасибо!