所以基本上我正在编写一个扫雷游戏,我的JToggleButtons存在问题。有时当他们被按下时(比如每10%),他们会在他们打开的时候做这个随机的事情,但是在我不得不再次按下它们之前不要跟随/执行mouseListener方法。这适用于我的右键单击和左键单击功能,所以我假设它有一些事情要做JToggleButtons如何与mouseListener交互,但我老实说不确定。我一直试图调试这几天,但它真的很奇怪,因为它是随机发生的,无论是连续两次,还是20次正常开放等等。任何评论,想法和帮助解决这个问题非常感谢!
一个例子是大部分时间,我点击按钮,它完成它需要做的所有事情(将瓷砖文本设置为关闭炸弹,打开附近的空白瓷砖等),但是当这个错误发生时,它只是setSelects为true并且什么都不做(甚至没有进入MouseAction监听器)。我的动作监听器如下:
public void mouseClicked(MouseEvent a) {
if (SwingUtilities.isLeftMouseButton(a)){
boolean found = false;
int i = 0, j = 0;
for (i = 0; i < length; i++)
{
for (j = 0; j < width; j++)
{
System.out.println("x:"+j);
System.out.println("y"+i);
if (a.getSource() == tiles[i][j])
{
if (!hasIcon(tiles[i][j]) && userPlay)
{
tiles[i][j].setIcon(null);
tiles[i][j].setSelected(false);
return;
}
found = true;
break;
}
}
if (found) break;
}
if(userPlay){
tiles[i][j].setSelected(true);
if(!firstClick)
{
spawnMines(i,j);
timer.start(watch);
firstClick = true;
}
if(tileType[i][j]!= -1)
{
openTiles(i,j);
setTileText();
}
else lose();
checkWin();
}
else setTileText();
}
else if (SwingUtilities.isRightMouseButton(a))
{
int i = 0, j = 0;
for (i = 0; i < length; i++)
{
for (j = 0; j < width; j++)
{
System.out.println("x:"+j);
System.out.println("y"+i);
if (a.getSource() == tiles[i][j])
{
if (hasIcon(tiles[i][j]) && (tileType[i][j] == 0 || tileType[i][j] == -1) && userPlay)
{
tiles[i][j].setIcon(flag);
bombTracker--;
bombNumber.setText(" # of Bombs: "+ bombTracker); //text Area used for bombNumber
}
else
{
if (userPlay&&(tileType[i][j]!=-2))
{
tiles[i][j].setIcon(null);
bombTracker++;
bombNumber.setText(" # of Bombs: "+ bombTracker); //text Area used for bombNumber
}
}
}
}
}
}
}
谢谢!