Создание уникальных слушателей действий в цикле

В настоящее время я пытаюсь создать уникальных слушателей действий для изображений на JPanel. По сути, я показываю название фильма с изображением пяти звезд справа от названия.

Пользователь может щелкнуть звездочку, и прозрачный прямоугольник изменяет размеры области, по которой щелкнули пользователи, все это работает правильно, однако каждое изображение звезды совместно использует один и тот же приемник щелчка мыши, поэтому все изображения звезд реагируют на одно и то же событие щелчка мыши.

Я пытаюсь создать уникальный прослушиватель событий для каждого изображения звезды, чтобы каждый из них мог установить разные значения перед нажатием кнопки "Сохранить" для сохранения значений. Может ли кто-нибудь дать мне несколько советов о том, как этого можно достичь?

public void addJPanel() {

    GridLayout layout = new GridLayout(0, 2);

    JPanel buttonPanel = new JPanel(new FlowLayout());

    this.setLayout(layout);

    try {
        img = ImageIO.read(new File("stars.jpg"));
    } catch (IOException e) {
        System.out.println("No image found!");
    }

    JLabel label;

    try {

        for (Media med : cart.getCart().keySet()) {

            label = new JLabel(med.getTitle());

            ratingTxt.add(label);

            this.add(ratingTxt);

            label = new JLabel(new ImageIcon(img));

            ratingImg.add(label);
            ratingImg.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    JLabel label2 = null;
                    ratingImg.removeAll();
                    for (Media med : cart.getCart().keySet()) {

                        label2 = new JLabel(new ImageIcon(Process(img,
                                e.getX())));
                        ratingImg.add(label2);
                    }

                    frame.pack();
                    frame.setSize(600, 250);

                }
            });

            this.add(ratingImg);

        }

    } catch (NullPointerException e) {
        label = new JLabel(
                "Nothing to display try doing some shopping first!");
        this.add(label);
    }

}

0 ответов

Другие вопросы по тегам