Как получить источник JButton в цикле for - PullRequest
0 голосов
/ 05 августа 2020

В настоящее время я работаю над проектом 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. Все они закончились одной и той же проблемой

Мне нужно решение или другой способ сделать это, если есть, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...