|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
[JAVA] Contenuto JFrame
Salve a tutti,
Premetto subito che sono piuttosto nuovo alle GUI, quindi probabilmente sto per dire bestialità, scusatemi in partenza ![]() Ho concluso una GUI che attualmente funziona in questo modo (schematizzo dato che il codice è molto lungo): Un main crea un frame (chiamiamolo frame1), attraverso un buttonlistener setta il frame1 non visibile e invoca un altro metodo statico che crea un frame2 ex novo lo riempe a dovere ed ha buttonlistner assolutamente analoghi a frame1. Tutto ciò avviene a catena per oltre una decina di finestre almeno. Il mio dubbio è che il creare così tanti Frame sia poco corretto, avevo dunque pensato di passare ai vari metodi come argomento il frame originario da riempire al posto dei vari frame che vengono creati ex-novo dai metodi, in questo modo eviterei di creare frame ogni volta, ma non riesco a farlo. L'unica cosa che mi era venuta in mente è creare per ogni metodo un pannello a cui aggiungere i componenti come facevo con i nuovi frame per poi settarlo come contentpane del frame passato come riferimento. Ma facendo così non è ugualmente dispendioso? Altra domandina è, io ho diversi bottoni "Indietro", grazie al modo usato fino ad adesso, mi bastava passare come riferimento ad ogni metodo il frame creato dal metodo precedente e lavorare di .setVisible, se dovessi invece cambiare il tutto per "ri-riempire" uno stesso frame dovrei più volte svuotarlo e ri-riempirlo, non sarebbe molto peggio ? Vi ringrazio e mi scuso per la domanda magari sciocca. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
prima la seconda: dal punto di vista dell'organizzazione il codice non cambia perchè quelli che prima erano frame diventerebbero pannelli. Passi il riferimento "globale" a questi così come lo passavi ai frame.
Circa l'uso dei frame in verità è una scelta di "filosofia", tra interfacce a desktop multipli (cioè più finestre) e quelle a desktop singolo. Quello che conta è l'usabilità. Ad esempio una MDI può essere grandiosa se hai due monitor e una ciofeca galattica se ne hai uno solo. Le SDI dipendono tanto dalla risoluzione dello schermo: se è bassa passi metà del tempo a trascinare barre di scorrimento. Insomma, bisogna vedere.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
Quote:
Ad esempio se l'utilizzatore seleziona un campo di una JList e preme OK, a lui compare nello stesso spazio utilizzato prima un insieme di TextField con campi da modificare, quello che accade a livello del mio codice è che il vecchio frame contenente JList ed altra roba viene settato non visibile, mentre viene chiamato un metodo che si occupa di creare una nuova finestra con i vari componenti e la setta visibile fino a contro-ordine. Quindi però, se ho capito bene, a livello di efficienza non cambia nulla se dovessi ri-riempire lo stesso frame con diversi pannelli, giusto ? Scusami è che oltre ad esser novizio con le GUI lo sono anche con la programmazione ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
a livello di efficienza ne guadagni (con un frame solo) perchè la realizzazione di un JFrame è un procedimento oneroso. Relativamente parlando: all'atto pratico l'utente non si accorge di alcuna maggiore rapidità del programma.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Sep 2007
Messaggi: 59
|
Quote:
L'unica cosa che mi puzzava è che usando questo metodo, ad ogni pulsante indietro devo ricreare un panel da capo, ma se mi dici che creare un JFrame è oneroso, intraprenderò questa strada. Ti ringrazio ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:47.