在循环中创建唯一的动作侦听器

时间:2014-10-13 02:20:25

标签: java swing event-listener mouseclick-event

我目前正在尝试为JPanel上的图片创建独特的动作侦听器。我基本上是在名字右边显示一个五星图像的电影名称。

用户可以单击星星,并且透明矩形会调整大小到用户单击的区域,所有这些都可以正常工作,但是每个星形图像都共享相同的鼠标单击侦听器,因此所有星形图像都会对同一个鼠标单击事件做出反应。

我正在尝试为每个星形图像创建一个独特的事件监听器,以便在单击" save"之前可以将它们各自设置为不同的值。用于存储值的按钮。谁能给我一些关于如何实现这一目标的建议?

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 个答案:

没有答案