Originariamente inviato da ilikeceres
C'è la possibilità di accedere a specifiche celle per ridisegnarne il contenuto all'interno di un pannello strutturato con un GridLayout?
Mi spiego meglio: dovrei creare una griglia (ad esempio 3x3) e metterci all'interno delle immagini, poi in seguito ad un evento dovrei far sì che specifiche celle cambiassero l'immagine al suo interno (senza ridisegnare tutto ogni volta). qualcuno ha qualche suggerimento?
In realtà ti basta semplicemente andare ad agire sul componente nella cella ... ovvero nel tuo caso il JLabel. Semplicemente tieni l'array dei JLabel da qualche parte (variabile di istanza) e poi imposta la nuova immagine sul JLabel!!
EDIT: consiglio una semplice classe del tipo:
codice:
public class IconsGrid extends JPanel {
private JLabel[][] labels;
public IconsGrid(Icon defaultIcon) {
labels = new JLabel[3][3];
setLayout(new GridLayout(3, 3));
for (int r = 0; r < 3; r++) {
for (int c = 0; c < 3; c++) {
labels[r][c] = new JLabel(defaultIcon);
add(labels[r][c]);
}
}
}
public void setIcon(Icon icon, int r, int c) {
// ....da completare....
}
// ....altri metodi, se necessari....
}
Semplice, pulito e più "astratto".
Basta poi mettere un oggetto IconsGrid nel content pane del JFrame (parte CENTER con il BorderLayout di default).