该代码工作正常。当我离开它时,代码将描述所有内容。唯一的问题是我不想点击同一个地点!我可以找不到解决办法。有什么建议吗?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