Salve a tutti, ho creato un applicazione in cui ho una Classe astratta chiamata Terreno che implementa una cella quadrata e due sue sotto classi di Tipo Strada e di Tipo Prato.
Inserisci in una griglia (GridPane) 8x8 nei bordi oggetti di tipo strada e il resto di tipo Prato. E fin qui non ho problemi.
Ora vorrei fare che ad un MouseEvent sulla singola cella, questa venga sostituita da un tipo diverso.
Prato->Strada e viceversa.
Codice Terreno:
Codice Strada:codice:public abstract class Terreno extends StackPane { public abstract void Disegna(); }
Codice Prato:codice:public class Strada extends Terreno { Rectangle r; Circle auto; Strada(){ Disegna(); } @Override public void Disegna() { r = new Rectangle(50,50); auto = new Circle(20); r.setFill(Color.GREY); auto.setFill(Color.RED); auto.setOpacity(0); getChildren().addAll(r,c); } }
Codice Classe principale copio solo il pezzo del GridPane:codice:public class Prato extends Terreno { Rectangle r1; Prato(){ Disegna(); } @Override public void Disegna() { r1 = new Rectangle(50,50); r1.setFill(Color.GREEN); getChildren().add(r1); } }
codice:for(int i=0;i<size;i++){ Terreno t; for(int j=0;j<size;j++){ if(j==size-1 || j==0 || i==size-1 || i==0 ){ t= new Strada(); //t.setId("Strada"); } else{ t= new Prato(); //t.setId("Prato"); } root.add(t,j,i); t.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { Terreno c; c = (Terreno) event.getSource (); c=new Prato(); } }); } }

Rispondi quotando