所以我最近再次开始使用java,我想制作一个包含64个按钮的程序,所有按钮都有单独的图片。每当你左键单击一个它变成蓝色,当你右键单击它时,当你右键单击它会重置为单个按钮时变为红色。这是我到目前为止 - 只能发布两个链接 -
在我得到程序的基础后,所有出发我遇到了一个问题,每当我中间点击我可以再左键单击更改多个按钮一个颜色,下面是一个例子:http://imgur.com/jVXeTkA。
目前点击的工作方式是:
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) {
}
});
以下是完整代码的pastebin: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按钮,mouselistener适用于所有,个人颜色/检查,个人图片
感谢您的时间
答案 0 :(得分:0)
首先创建一个类,让我们调用它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值的地方。 然后,当您创建所有按钮时,您只需添加
JButton CornerCrimson = new JButton();
CornerCrimson.setIcon(new ImageIcon("src/DG Keys/Corners/Crimson_corner_key.png"));
CornerCrimson.addMouseListener(new MyMouseListener(this));