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:
public abstract class Terreno extends StackPane {
public abstract void Disegna();
}
Codice Strada:
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 Prato:
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 Classe principale copio solo il pezzo del GridPane:
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();
}
});
}
}