該代碼工作正常。當我離開它時,代碼將描述所有內容。唯一的問題是我不想點擊同一個地點!我可以找不到解決辦法。有什麼建議嗎?Single Click with mouseListener on JPanel [] []表
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
innerCells[i][j] = new JPanel();
innerCells[i][j].setLayout(new BorderLayout());
innerCells[i][j].setBorder(BorderFactory.createLineBorder(lineColor));
innerCells[i][j].setBackground(backgroundColor);
innerCells[i][j].addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
JPanel k = (JPanel) e.getSource();
JLabel l = new JLabel("", JLabel.CENTER);
int x = getRows();
int y = getCols();
for (int r = 0; r < getRows(); r++) {
for (int c = 0; c < getCols(); c++) {
if (innerCells[r][c] == k) {
x = r;
y = c;
}
}
}
if (array[x][y] == 0) {
l.setBackground(k.getBackground());
k.add(l);
k.setBackground(Color.white);
k.revalidate();
} else {
l.setBackground(k.getBackground());
k.add(l);
k.setBackground(Color.red);
k.revalidate();
}
randomHits();
}
你能否嘗試用更清晰的方式闡明你的問題? –
我有一個JPanel [] []表二維。當我點擊一個JPanel時,它的backrounf顏色變成紅色或白色。事情是,當我點擊JPanel我不想再次點擊那裏,但與該代碼我貼了我不能這樣做!我希望我幫你理解我的代碼! –
不要爲每個單元格創建一個新的MouseListener。創建一個MouseListener併爲每個單元格添加相同的偵聽器。 – camickr