코드가 정상적으로 작동합니다. 클릭을하면 모든 것이 코드화됩니다. 유일한 문제는 동일한 지점을 클릭하고 싶지 않다는 것입니다. 그 해결책을 찾지 못해. 어떤 제안?JPanel [] [] 테이블에서 mouseListener를 한 번 클릭하십시오.
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 [] [] 테이블이 2 차원입니다 .JPanel에서 클릭하면 backrounf 색상이 빨간색 또는 흰색으로 바뀝니다 .JPanel에서 클릭하면 다시 그 코드를 클릭하고 싶지 않습니다. 나는 그것을 할 수 없다고 게시했다. 나는 당신이 나의 코드를 이해하도록 도와 주었으면 좋겠다! –
모든 셀에 대해 새 MouseListener를 만들지 마십시오. 1 개의 MouseListener를 작성해, 모든 청취자에게 같은 청취자를 추가합니다. – camickr