Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127

    [java-swing] Jtree imporre l'apertura di tutti i nodi

    salve,

    ho un JTree nel quale inserisco dei DefaultMutableTreeNode l'albero assume al massimo un livello 2 a partire dalla radice.

    la cosa antipatica è che mentre tutti i figli della radice (livello 1) alla visualizzazione del jtree appaiono "aperti" , i figli del livello 2 appaiono chiusi, e quindi bisogna cliccare sul padre (figlio di liv.1) per vederli.

    voirrei che quando il jtree viene visualizzato, tutti i nodi siano da subito visibili, c'è un metodo per fare ciò ?

    grazie

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

    Re: [java-swing] Jtree imporre l'apertura di tutti i nodi

    Originariamente inviato da tulkas85
    c'è un metodo per fare ciò ?
    Vedi su http://www.exampledepot.com/egs/java...ExpandAll.html
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non ho mai avuto tale necessità, quindi non ho mai provato tale soluzione.
    Ad ogni modo, considera una cosa di questo tipo:

    quando aggiungi al model un DefaultMutableTreeNode, recupera il relativo path tramite il metodo getPath(). Ottieni così un array di Object. Con questo array costruisci un TreeNode e lo memorizzi, ad esempio, in un ArrayList.

    Dopo aver completato la costruzione del model, prima di visualizzare il JTree, richiami, con un ciclo sull'ArrayList, il metodo expandPath() di JTree su ciascun oggetto dell'ArrayList.

    In questo modo, forzi la visualizzazione di tutti i nodi (quindi, di tutti i livelli) dell'albero.

    Con un po' di codice:
    codice:
    DefaultMutableTreeNode nodo = ... ;
    
    // dopo aver aggiunto il DefaultMutableTreeNode al model:
    Object[] path = nodo.getPath();
    arrayList.add( new TreePath(path) );
    
    // prima di visualizzare il JTree:
    for(int j=0; j<arrayList.size(); j++) {
       tuoJTre.expandPath( (TreePath) arrayList.get(j) );
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    127
    grazie ad entrambi...

    alla fine ho utilizzato la soluzione de leleFT, anche se mi pare ke il suggerimento di andbin fosse più generale ed adatto a qualsiasi tipo di Jtree anche con più livelli in quanto accede ricorsivamente ai nodi.

    dovendo io però espandere un solo livello, me la sono cavata con il for sull'arraylist.

    grazie ragazzi sempre preziosi

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.