Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    35

    [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. #2
    effettivamente potresti usare entrambi i modi:
    - un unico frame dove setti di volta in volta il contentPane;
    - tanti frame come attualmente hai fatto.

    se volessi continuare a mantenere la tua soluzione ti consiglierei di rilasciare le risorse (dispose() quando il frame non serve più (anzichè farlo solamente "sparire" col setVisible(false) e di ricreartelo all'occorrenza.
    Esempio (passaggio da frame1 a frame2):

    frame1 --> frame1.dispose(); --> new frame2(); e viceversa per l'indietro:
    frame2 --> frame2.dispose(); --> new frame1();

    per quanto rigurda il carico di lavoro posso dirti che, se rilasci opportunamente le risorse penso che il tuo metodo dovrebbe essere più efficiente (nell'altro, ad ogni passaggio da un pannello all'altro, avresti in memoria i riferimenti a null di quegli oggetti che non usi più).
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.