Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema con JTree

  1. #1

    Problema con JTree

    Salve,

    non capisco perchè gli oggetti non vengono visualizzati nel JTree!
    La logica che ho seguito per l'aggiunzione dei nodi è la seguente (è la stessa dell'esempio su java.sun):
    codice:
    nome=printName(allFiles[n]); //restituisce String
    size=printSize((int)allFiles[n].length()); //restituisce String
    nodo.add(new DefaultMutableTreeNode( new FileInfo(nome, size) ));

    La classe FileInfo:
    codice:
        class FileInfo
        {
        	String nomeFile;
        	String fileSize;
        	
        	FileInfo(String name, String size)
        	{
        		this.nomeFile=name;
        		this.fileSize=size;
        	}
        	
        	public String toString()
        	{
        		return nomeFile+" "+fileSize;
        	}
        }
    Grazie in anticipo per l'aiuto.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema con JTree

    Originariamente inviato da VincenzoTheBest
    non capisco perchè gli oggetti non vengono visualizzati nel JTree!
    La logica che ho seguito per l'aggiunzione dei nodi è la seguente (è la stessa dell'esempio su java.sun)
    Partiamo da una premessa: quando si usa JTree ci sono almeno 2 elementi in gioco: il JTree ovviamente e il model (implementazione di TreeModel). Se il model è nel caso specifico un DefaultTreeModel, allora ci sono in gioco anche dei nodi specifici (implementazione di TreeNode).
    In generale, è il model che "sa" come gestire la struttura dati e come notificare le modifiche ai listener.
    Se si modifica direttamente un nodo settando il suo valore, aggiungendo/rimuovendo figli, ecc... il model non ne "sa" nulla ....

    Quindi, tornando alla tua questione, il punto è: quando è che fai quel nodo.add()??? Se lo fai nella inizializzazione prima di visualizzare il tutto non ci dovrebbero essere problemi. Se lo fai successivamente a seguito di un qualche evento, allora non basta cambiare qualcosa sul nodo ... deve "saperlo" anche il model!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si scusami non mi sono spiegato affatto bene

    Allora il metodo add serve ad aggiungere i nodi alla radice principale che è un oggetto DefaultMutableTreeNode, una volta finita l'aggiunzione dei nodi, passo la radice al costruttore della classe JTree, facendo - new JTree(radice) -

    Ho provato a visualizzare il JTree localmente e tutto viene visualizzato correttamente, ma se provo ad inviare l'oggetto JTree ad un programma client, questo visualizza solo le icone del JTree senza dunque i nomi dei files...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    ma se provo ad inviare l'oggetto JTree ad un programma client, questo visualizza solo le icone del JTree senza dunque i nomi dei files...
    Prima ... non hai affatto parlato di questo "trasferimento" di dati!!! (della serie: spieghiamoci bene ...)

    Questo tuo trasferimento di dati si basa sicuramente sulla "serializzazione" degli oggetti. Qui allora si tratta di verificare che i vari oggetti siano serializzabili: DefaultMutableTreeNode è Serializable, quindi il suo stato è serializzabile. Lo userObject contenuto nel nodo può anche essere salvato, a patto che sia anch'esso Serializable. La tua classe FileInfo, stando al codice che hai postato prima risulta non Serializable. La questione quindi è solo qui ... rendere Serializable la tua classe.

    E infine, come suggerimento in generale, non serializzare mai (se non per ragioni ben precise e volute) interi componenti AWT/Swing. Salvano troppa roba .... comprese tutte le loro proprietà visuali. Serializza piuttosto la struttura dati minimale che serve per i tuoi scopi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Lato Client mi lancia l'eccezione "ClassNotFoundException: FileInfo"

    cosa mi consigli di fare?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Lato Client mi lancia l'eccezione "ClassNotFoundException: FileInfo"
    Il messaggio mi sembra chiaro .... non trova la classe FileInfo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Come posso risolvere questo problema?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Come posso risolvere questo problema?
    Il file FileInfo.class c'è ed è in "classpath"?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Si giusto il problema era quello...praticamente il classPath di FileInfo sul lato Client risultava diverso da quello lato server.

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