Como usar o MouseListener para encontrar uma célula específica em uma grade
Estou tentando criar um jogo Java com uma grade de 10 x 10 composta de células. A grade parece gostar disso:
public class Grid extends JPanel implements MouseListener {
public static final int GRID_SIZE = 10;
public Grid() {
setPreferredSize(new Dimension(300, 300));
setLayout(new GridLayout(GRID_SIZE, GRID_SIZE));
for (int x = 0; x < GRID_SIZE; x++)
for (int y = 0; y < GRID_SIZE; y++)
add(new Cell(x, y));
addMouseListener(this);
}
// All Mouse Listener methods are in here.
A classe Cell se parece com isso:
public class Cell extends JPanel {
public static final int CELL_SIZE = 1;
private int xPos;
private int yPos;
public Cell (int x, int y) {
xPos = x;
yPos = y;
setOpaque(true);
setBorder(BorderFactory.createBevelBorder(CELL_SIZE));
setBackground(new Color(105, 120, 105));
setPreferredSize(new Dimension(CELL_SIZE, CELL_SIZE));
}
// Getter methods for x and y.
Meu problema é que agora estou tentando implementar os MouseListeners na classe Grid. O que eu percebi é que, embora eu possa retornar as coordenadas X e Y da Grade, não consigo manipular as próprias células. Estou assumindo que isso é porque quando os criei no Grid, estou criando 100 Células aleatórias sem identificadores e, portanto, não tenho como acessá-las diretamente.
Alguém poderia me dar conselhos sobre isso? Preciso rever meu código e a maneira como estou criando as células? Estou sendo terrivelmente estúpido e perdendo uma maneira óbvia de acessá-los? obrigado