PDA

View Full Version : [JAVA] new Frame on Click


fbcyborg
08-06-2005, 14:08
Devo realizzare una interfaccia grafica in cui, sul Frame principale, alla pressione di un JButton venga aperta una maschera di inserimento dati.
Ho programmato l'evento di apertura di tale JFrame ma rimango con alcuni dubbi:
supponiamo che ci siano n bottoni che servono ad aprire n JFrame diversi; tali JFrame devono comunque essere caricati sin dalla creazione del Frame principale e settati come "non visibili" oppure c'è un altro modo? Il problema che mi pongo è: devo caricarli in memoria tutti quanti, e renderli visibili con show(), e visualizzarli a mio piacimento, oppure c'è un modo alternativo, più standard?
Sto usando ECLIPSE

Grazie... ciao!

fgmac
08-06-2005, 14:36
Di primo acchito direi:

all'interno del metodo che gestisce l'evento di clik sul button dovrebbe andare una cosa del genere:

//crei il frame (qui lo crei e lo carichi e poi non ci pensi piu')
JFrame nuovoFrame = new TuoFrame ();

//qui inizializzi il nuovo frame
nuovoFrame.init(); //init ovviamente e' un tuo metodo di inizializzazione

//lo mostri
nuovoFrame.show();

//recuperi i dati dalla maschera
nuovoFrame.salvaDati(); //ovviamente un metodo che ti memorizza i dati della maschera.


ciao,

fbcyborg
08-06-2005, 17:31
OK, grazie,
in effetti è quello che ho provato a fare la prima volta. Ma una volta che ho finito di usare tale frame, diciamo quando lo chiudo x esempio... che cosa succede? lo nascondo (HIDE on close?) ?? così rimarrebbe cmq in memoria, ma non visibile... Che politica si usa in questi casi? Se ho 10 frame, e li apro tutti e 10, che succede poi quando li chiudo? mi rimangono nascosti 10 frame e quando li voglio riutilizzare li mostro semplicemente???? Nel caso siano delle maschere di inserimento dovrei preoccuparmi di azzerare tutti i campi (di testo) ad ogni nuovo show del frame.. altrimenti vedrei quelli vecchi, giusto?

Alvaro Vitali
08-06-2005, 17:55
Si, ovviamente se usi la politica di mostrarli e nasconderli dovrai richiamare un metodo per azzerare i campi dopo averli nascosti o prima di rivisualizzarli.
Se invece crei e chiudi non è necessario, per chiuderli puoi usare il metodo dispose() che rilascia le risorse grafiche utilizzate.
Ovviemente se pensi che questi oggetti grafici vengano utilizzati più volte conviene mostrarli e nasconderli, di contro la memoria allocata sarà sempre massima perchè carichi cmq tutte le finestre (nascoste inizialmente) anche se non verranno mai utilizzate.
ciao!

fgmac
09-06-2005, 07:51
Beh non e' per forza necessario caricare tutte le form all'avvio del programma.
Ti definisci in modo globale l'elenco delle form che ti servono:
JFrame f1 = null;
JFrame f2 = null;
JFrame f3 = null;
....


Quando dovresti mostrare una form fai il test
if (f1 == null) {
f1 = new TuaForm();
}

il resto rimane invariato

La prima volta viene caricata in memoria la form, poi viene solo richiamata.
Ti conviene fare un'analisi accurata dell'utilizzo di queste form, per quelle di + frequente utilizzo forse conviene usare questa metodologia.


ciao