ecco come ho modificato il codice
adesso sembra funzionare a dovere
sto facendo alcuni test per verificare
mi manca solo la funziona che riesca a caricare i mattoncini salvati precedentemente
hai qualche consiglio? credo che comunque mi tocca scorrermi tutta la griglia per poi selezionare solo quelli di cui ho le coordinate segnate
codice:
public Griglia(int rows, int cols, boolean isEditable) {
setLayout(new GridLayout(rows, cols));
celle = new Cella[rows * cols];
colora = new boolean[rows * cols];
clicker = new Clicker();
int r = 0;
int c = 0;
for (int i = 0; i < rows * cols; i++) {
if ((i % Names.NUMERO_COLONNE) == 0) {
if (i != 0) {
r++;
}
c = 0;
}
Cella tmpC = new Cella(r, c);
if (isEditable) {
tmpC.addMouseListener(clicker);
}
add(tmpC);
c++;
}
mattoncini = new ArrayList();
try {
if (flmappe.exists()) {
mappe = deserializzaMappe();
} else {
mappe = new HashMap<String, ArrayList<Coordinate>>();
}
} catch (IOException ex) {
Logger.getLogger(Griglia.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Griglia.class.getName()).log(Level.SEVERE, null, ex);
}
}
private class Cella extends JPanel {
private final int riga;
private final int colonna;
private boolean colorata;
private Color bckColore;
public Cella(int row, int col) {
riga = row;
colonna = col;
setOpaque(true);
bckColore = getBackground();
setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
}
public void switchColore() {
setBackground(colorata ? bckColore : Color.GREEN);
colorata = !colorata;
}
public Coordinate restituisciCoordinate() {
return new Coordinate(colonna, riga);
}
}
private void coloraDecolora(Cella c) {
c.switchColore();
}
private class Clicker extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent me) {
Cella obj = (Cella) me.getSource();
coloraDecolora(obj);
Coordinate cord = obj.restituisciCoordinate();
System.out.println("colonna: " + cord.getX());
System.out.println("righe: " + cord.getY());
inserisci_CancellaMattoncino(cord);
}
}