Ciao, io ho fatto qualcosa di simile anche se non è esattamente quello che cerchi forse.
Spesso ho più classi e ho la necessità di chiudere un frame e aprirne un altro o nascondere/mostrare/modificare delle componenti gestite da un'altra classe: per questo di solito definisco il JFrame come variabile statica di una classe, e se ad esempio premo un pulsante (gestito da un'altra classe) faccio qualcosa del tipo:
Con getComponent puoi richiamare i componenti interni a qualsiasi livello, ma se vuoi farne in successione devi fare il cast del Component a quello che ti aspetti di trovare (ovviamente rischi che si blocchi in esecuzione se non gestisci bene il tutto).codice:Container finestra=NomeClasse.frame.getContentPane(); ((JLabel)((JPanel)finestra.getComponent(0)).getComponent(0)).setText("Seleziona la partita da rivedere (Totale partite: "+n+")");
In questo esempio cambiavo il testo di una label , ho anche dovuto mostrare e nascondere bottoni in questo modo:
Non ho mai però nascosto/mostrato pannelli dopo averli creati, anche perchè dovresti ridefinire la posizione degli altri pannelli se vuoi controllare il tutto...codice:if(premuto.equals("Elimina")) // premuto è la getActionCommand() del bottone { // in questo caso ho definito statico il pannello pS in un'altra classe for(int i=13;i<16;i++)((Box)(Classe.pS.getComponent(0))).getComponent(i).setVisible(false); for(int i=0;i<3;i++)((Box)(Classe.pS.getComponent(1))).getComponent(i).setVisible(false); for(int i=3;i<8;i++)((Box)(Classe.pS.getComponent(1))).getComponent(i).setVisible(true); }
Altri metodi per recuperare Componenti sono ad esempio getComponents() che restituisce un array dei componenti di un Container,oppure getParent() che restituisce il Container di un componente qualsiasi.
Ps: Uso Swing da pochi mesi e molte delle cose scritte potrebbero fare rabbrividire qualche nostro utente più esperto![]()

Rispondi quotando