java批量按钮颜色搜索



所以我最近又开始使用java了,我想制作一个有64个按钮的程序,所有按钮都有单独的图片。每当你左键单击一个按钮时,它就会变成蓝色,当你右键单击时,它会变成红色。这是我到目前为止所拥有的——只能发布两个链接——

在我把程序的基础全部设置好后,我遇到了一个问题,每当我中键单击时,我都可以再次左键单击,将多个按钮更改为单一颜色,下面是一个例子:https://i.stack.imgur.com/IQX66.jpg.

目前点击的工作方式是:

JButton CornerCrimson = new JButton();
    CornerCrimson.setIcon(new ImageIcon("src/DG Keys/Corners/Crimson_corner_key.png"));
    CornerCrimson.addMouseListener(new MouseListener() {
        public void mouseClicked(MouseEvent f) {
        }
        public void mouseEntered(MouseEvent f) {
        }
        public void mouseExited(MouseEvent f) {
        }
        public void mousePressed(MouseEvent e) {
            if (SwingUtilities.isLeftMouseButton(e)) {
                if (g1 == 0) {
                    CornerCrimson.setBackground(Color.blue);
                    g1++;
                }
            } else if (SwingUtilities.isRightMouseButton(e)) {
                if (g2 == 0) {
                    CornerCrimson.setBackground(Color.red);
                    g2++;
                }
            } else if (SwingUtilities.isMiddleMouseButton(e)) {
                CornerCrimson.setBackground(null);
                g1 = 0;
                g2 = 0;
            }
        }
        public void mouseReleased(MouseEvent e) {
        }
    });

以下是完整代码的粘贴框:http://pastebin.com/31cVkTFY.

有没有一种方法可以让我把这个鼠标监听器应用到所有按钮上,并检查我是否用鼠标中键点击了一个有颜色的按钮?

我想做一个数组,但我不知道如何做到这一点,并且仍然让按钮有像JButton CrescentGreen = new JButton(); CrescentGreen.setIcon(new ImageIcon("src/DG Keys/Crescent/Green_crescent_key.png")); panel.add(CrescentGreen); 这样的单独图片

如果这没有任何意义,请在下面询问,我会更准确地回答,我们将不胜感激

TL;DR 64按钮,鼠标监听器适用于所有,单个颜色/检查,单个图片

感谢您抽出时间

首先创建一个类,称之为MyMouseListener

public class MyMouseListener extends MouseListener {
    private HowEverYourBaseClassIsCalled myDataObject;
    public MyMouseListener(HowEverYourBaseClassIsCalled myDataObject)
    {
        this.myDataObject = myDataObject;
    }
    public void mouseClicked(MouseEvent f) {
    }
    public void mouseEntered(MouseEvent f) {
    }
    public void mouseExited(MouseEvent f) {
    }
    public void mousePressed(MouseEvent e) {
        if (SwingUtilities.isLeftMouseButton(e)) {
            if (this.myDataObject.g1 == 0) {
                CornerCrimson.setBackground(Color.blue);
                this.myDataObject.g1++;
            }
        } else if (SwingUtilities.isRightMouseButton(e)) {
            if (this.myDataObject.g2 == 0) {
                CornerCrimson.setBackground(Color.red);
                this.myDataObject.g2++;
            }
        } else if (SwingUtilities.isMiddleMouseButton(e)) {
            CornerCrimson.setBackground(null);
            this.myDataObject.g1 = 0;
            this.myDataObject.g2 = 0;
        }
    }
    public void mouseReleased(MouseEvent e) {
    }
}

HowEverYourBaseClassIsCalled类型位于存储g-Values的任何位置。然后,当你创建所有按钮时,你只需要添加

JButton CornerCrimson = new JButton();
CornerCrimson.setIcon(new ImageIcon("src/DG Keys/Corners/Crimson_corner_key.png"));
CornerCrimson.addMouseListener(new MyMouseListener(this));

最新更新