Я пытаюсь получить его так, как только моя мышь нажата, его срабатывают один раз и только один раз. Тем не менее, он продолжает дважды стрелять. Я не уверен, что это потому, что я просматриваю цикл for, но я хочу, чтобы слушатель мыши обнаружил, какой индекс массива я нажимаю. Вот почему я присваиваю его каждому индексу в массиве 2d, я не уверен, что лучший способ сделать это.Мышь Прессованное событие дважды срабатывает
Код:
public boolean firstClick = false;
public boolean secondClick = false;
for (int i = 7; i >= 0; i--) {
for (int j = 0; j < 8; j++) {
int tempi = i;
int tempj = j;
pnlCells[i][j].add(getPieceObject(str[(7 - i)][j]), BorderLayout.CENTER);
pnlCells[i][j].validate();
pnlCells[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
try {
if (firstClick == false || secondClick == false) {
if (firstClick == false) {
mouseX = tempj;
mouseY = 7 - tempi;
System.out.println("First You pressed" + mouseX + ", " + mouseY);
firstClick = true;
sourceColor = pnlCells[mouseX][mouseY].getForeground();
pnlCells[mouseX][mouseY].setForeground(Color.yellow);
pnlCells[mouseX][mouseY].repaint();
pnlBoard.repaint();
pnlMain.repaint();
} else if (secondClick == false) {
newMouseX = tempj;
newMouseY = 7 - tempi;
System.out.println("Second You pressed" + newMouseX + ", " + newMouseY);
secondClick = true;
}
if (firstClick == true && secondClick == true) {
firstClick = false;
secondClick = false;
pnlCells[mouseX][mouseY].setForeground(sourceColor);
pnlCells[mouseX][mouseY].repaint();
pnlBoard.repaint();
pnlMain.repaint();
PlayerMove pM = turn(); //send turn to server
objectOut.writeObject(pM); //send turn to server
System.out.println(name + ": sent move to server");
s.suspend();
}
}
} catch (IOException ex) {
Logger.getLogger(Player.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
//System.out.println(j+", "+(i)+":"+v.str[(7-i)][j]);
}
}
Однажды я кнопкой мыши один раз он всегда печатает Сначала Вы нажали xcoord1, ycoord1 Во-вторых Вы нажали xcoord2, ycoord2
Где определены 'firstClick' и' secondClick'? – MadProgrammer
@MadProgrammer просто добавил его в код – user3339242
В настоящее время, когда вы нажимаете на ячейку, 'firstClick' станет истиной, следующая ячейка (независимо от того, какая) будет нажата, будет реагировать на' secondClick' была 'false' - это поведение, которое вы хотите? – MadProgrammer