所以我最近又开始使用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));