Salve ho un codice così composto:
codice:
public class StagePrincipale extends Stage {
private final int DIM;
Circle[][] matrix;
public StagePrincipale(int righe){
DIM=righe;
matrix=new Circle[righe][righe];
GridPane g=new GridPane();
for(int i=0;i<righe;i++){
for(int j=0;j<righe;j++){
Circle c=new Circle(25);
c.setOpacity(0);
g.add(c, j , i );
matrix[j][i]=c;
}
}
HBox togglegroup=new HBox();//contenitore bottoni superiori
ToggleGroup algoritmi=new ToggleGroup();
ToggleButton alg1 = new ToggleButton("alg1");
ToggleButton alg2 = new ToggleButton("alg2");
ToggleButton alg3 = new ToggleButton("alg3");
alg1.setToggleGroup(algoritmi);
alg1.setId("1");
alg2.setToggleGroup(algoritmi);
alg2.setId("2");
alg3.setToggleGroup(algoritmi);
alg3.setId("3");
togglegroup.setAlignment(Pos.CENTER);
togglegroup.setSpacing(5);
togglegroup.getChildren().addAll(alg1,alg2,alg3);
togglegroup.setPadding (new Insets (10, 0, 10, 0)); //spazia i bottoni sopra e sotto
algoritmi.selectToggle(alg1);//di default il selezionato è l'1
final Button step = new Button("step");
step.setMinWidth(80);
step.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
ToggleButton a=(ToggleButton) algoritmi.getSelectedToggle();
switch(a.getId()){
case "1":new Algoritmo1(matrix);
break;
case "2":new Algoritmo2(matrix);
break;
case "3":new Algoritmo3(matrix);
break;
}
}
});
}
}
public class Algoritmo1 {
public Algoritmo1(Circle[][] matrix){
int dim=matrix.length;
Circle[][] matricecopia=new Circle[dim][dim];
for(int i=0;i<dim;i++){
for(int j=0;j<dim;j++){
matricecopia[i][j]=new Circle(25);
if(i!=0 && j!=dim-1)
matricecopia[i][j]=matrix[i-1][j+1];
else
matricecopia[i][j].setOpacity(0);
}
}
matrix=matricecopia;
}
}
c'è sicuramente qualcosa che manca perchè ho tagliato buona parte del codice per renderlo più breve ma alla mia domanda non dovrebbe servire. Tutto mi funziona e Algoritmo1 fa quello che voglio che faccia infatti alla fine con l'ultimo comando "matrix=matricecopia" stampando matrix questo ha i valori che voglio. Il problema è che appena ristampo il matrix sotto allo switch nella prima classe ritorna com'era prima. La mia domanda è matrix non è passato per riferimento e quindi dovrebbe cambiare? Se sbaglio qualcosa come posso risolvere questa cosa?