Ciao a tutti,
avrei bisogni di un vostro aiuto per capire come gestire dei poligoni.
In questo esempio ho dichiarato un oggetto Cella che ha come attributi 2 indici e un poligono
Nel main richiamo prima un metodo che crea tutte le CELLE e ne salva i riferimenti in una matrice, poi richiamo un metodo che disegna tutte le caselle utilizzando i riferimenti salvati nella matrice, e fin qui tutto bene.
Ora se io volessi cambiare il colore della cella con indice 2,2 come devo fare?
queste due righe di codice inserite nel main non hanno effetto, danno un risultato solo se le inserisco nel metodo paintComponent
g1.setColor(Color.red);
g1.fillPolygon(map[2][2].casella);
mi sapete dare due dritte?
Grazie
package scacchiera;
import java.awt.*;
import javax.swing.*;
/**
*
* @author fastor
*/
class Cella {
public int indexx;
public int indexy;
public Polygon casella;
public Cella(int indexx, int indexy,Polygon casella)
{
this.indexx=indexx;
this.indexy=indexy;
this.casella=casella;
}
}
public class Scacchiera extends JPanel {
final static int DIM_X=8;
final static int DIM_Y=8;
int zoom=50;
static Cella[] [] map = new Cella [DIM_X] [DIM_Y];
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scacchiera jp1 = new Scacchiera();
JFrame jf1 = new JFrame ("Scacchiera");
jf1.setVisible (true);
jf1.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
jf1.setSize (450, 450);
Container c =jf1.getContentPane();
c.add(jp1);
Graphics g1=jp1.getGraphics();
int k,w;
for (w=0; w<=DIM_X-1; w=w+1)
{
for(k=0; k<=DIM_Y-1; k=k+1) {
jp1.creaCella(w,k,jp1);
}
}
jp1.paintComponent(g1);
g1.setColor(Color.red);
g1.fillPolygon(map[2][2].casella);
}
public void creaCella (int w, int k, Scacchiera jp1){
int i;
int xv2,yv2, xv1, yv1;
xv1 = zoom*w;
yv1 = zoom*k;
xv2 = xv1 + zoom;
yv2 = yv1 + zoom;
Polygon quad= new Polygon();
quad.addPoint( xv1,yv1 );
quad.addPoint( xv1,yv2 );
quad.addPoint( xv2,yv2 );
quad.addPoint( xv2,yv1 );
Cella casella = new Cella(w,k,quad);
map[w][k]=casella;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int k,w;
for (w=0; w<=DIM_X-1; w=w+1){
for(k=0; k<=DIM_Y-1; k=k+1) {
g.setColor(Color.blue);
g.fillPolygon(map[w][k].casella);
g.setColor(Color.black);
g.drawPolygon(map[w][k].casella);
}
}
}
}