Salve ho un codice così composto:
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?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; } }

Rispondi quotando
