Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    JTree salvataggio e caricamento

    Ciao a tutti!
    Ho creato una GUI con un JTree, girovagando su internet ho scoperto che il modo più "semplice" per salvare un JTree in una classe è salvarlo appunto come JTree. Il problema è che una volta salvato e ricaricato non viene visualizzato dalla GUI.

    Per salvare uso il seguente codice
    codice:
    content.setWeightTree(Tree);
    Per caricarlo il seguente
    codice:
    Tree = content.getWeightTree();
    Tree.updateUI();
    Sono convinto che non ci siano problemi di null pointer perchè
    codice:
    content.getWeightTree().getRowCount()
    restituisce il numero effettivo di righe dell'albero

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Lory1990 Visualizza il messaggio
    ho scoperto che il modo più "semplice" per salvare un JTree in una classe è salvarlo appunto come JTree.
    Hai usato la "serializzazione"? Beh, sì, JTree tecnicamente è serializzabile e si può fare ammesso che gli oggetti nei node siano anch'essi serializzabili.
    La questione semmai è che non sarebbe proprio una buona cosa, anche perché serializzando un intero componente grafico viene serializzata una "marea" di roba.

    Quote Originariamente inviata da Lory1990 Visualizza il messaggio
    Il problema è che una volta salvato e ricaricato non viene visualizzato dalla GUI.
    Normalmente si crea la GUI istanziando i vari componenti es. new JTree() e aggiungendoli ciascuno dentro un contenitore. Il punto è che se avevi serializzato un JTree, quando ricrei la GUI non devi più fare ovviamente new JTree() ma prendere quello deserializzato.
    Il problema è che un conto è farlo mentre crei la GUI ... un altro conto è farlo dopo, a seguito di un qualche evento. Bisogna anche considerare questioni di posizionamento/dimensionamento, layout manager se c'é e in tal caso come rivalidarlo dopo che intendi aggiungere il JTree.

    Al limite, se proprio vuoi continuare con la serializzazione, al massimo serializza il TreeModel ... non il JTree (in qualunque momento, anche a seguito di un evento puoi fare tuoJtree.setModel(treeModelDeserializzato) senza alcun problema).

    P.S. dimentica updateUI(), questo serve per cose interne al framework legate ai Look&Feel. Generalmente non è da usare esplicitamente.
    Ultima modifica di andbin; 21-04-2014 a 11:56
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Purtroppo si, so che non è cosa buona salvare un componente GUI ma non mi viene per adesso nessuna idea su come salvare e caricare una struttura ad albero.... se c'è qualche idea sarò contento di implementarla!

    Per quanto riguarda il caricamento ho provato a passare sia il JTree sia il Model in fase di creazione GUI ma non succede nulla, tutto come prima.... se potessi cambiare metodi di "salvataggio" e "caricamento" sarei molto contento!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Ripeto che in linea di massima se serializzi/deserializzi il solo TreeModel (e non JTree) non hai problemi di layout (visto che il JTree si presuppone che o lo stai per creare all'inizio quando crei la GUI oppure è già posizionato/dimensionato e visibile in un secondo momento) e comunque così eviti di salvare troppa "roba".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Funziona grazie grazie grazie!!

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.