Visualizzazione dei risultati da 1 a 5 su 5

Discussione: JTree aggiornamento

  1. #1

    JTree aggiornamento

    Salve a tutti,
    ho un applet ho il seguente codice e compilo una JTree con due voci.

    codice:
    private JTree jTreeDicomInfo = null;
    
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("1.0");
    root.add(new DefaultMutableTreeNode("1.0.1"));
    
    jTreeDicomInfo = new JTree(root);
    jTreeDicomInfo.setRootVisible(true);
    E fin qui tutto ok. Il mio problema è questo: creo un nuvo DefaultMutableTreeNode con altre voci, come faccio a dire JTree prenditi questo nuovo DefaultMutableTreeNode e caricalo?

    Grazie


    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza''."
    Dante Alighieri

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

    Re: JTree aggiornamento

    Originariamente inviato da BlackBird
    creo un nuvo DefaultMutableTreeNode con altre voci, come faccio a dire JTree prenditi questo nuovo DefaultMutableTreeNode e caricalo?
    Intendi dire facendo questo dinamicamente dopo che il JTree è già stato creato e visualizzato a video??

    Innanzitutto devi avere a che fare con il model (implementazione di TreeModel che per default è un DefaultTreeModel, a meno che fornisci una tua implementazione).

    Se aggiungi/rimuovi un nodo direttamente tramite il model (es. defTreeModel.insertNodeInto(......) ) allora il model "sa" ovviamente che è stato modificato "qualcosa" e aggiornerà la sua struttura dati e farà le dovute notifiche alla "view".

    Se invece aggiungi/rimuovi qualcosa in modo indiretto su un DefaultMutableTreeNode (es. unNodo.insert(altroNodo, 0) ) ovviamente il model non può "sapere" che tu hai modificato qualcosa molto annidato nell'albero!! E infatti esistono i reload() / reload(TreeNode node) di DefaultTreeModel per dire "guarda model che ho modificato tutto/un nodo, aggiorna/notifica quello che serve".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    risolto così:


    DefaultTreeModel model = (DefaultTreeModel) jTreeDicomInfo.getModel();
    model.insertNodeInto(tag, root, 1);


    ect etc


    Ora un'altra domanda: come si cancella tutto quello che sta sotto la root?

    Grazie per l'aiuto
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza''."
    Dante Alighieri

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da BlackBird
    DefaultTreeModel model = (DefaultTreeModel) jTreeDicomInfo.getModel();
    model.insertNodeInto(tag, root, 1);
    Ok, come dicevo prima, così il model "sa" che c'è un nuovo nodo tag sotto root, quindi aggiorna/notifica lui dove/come necessario.

    Originariamente inviato da BlackBird
    come si cancella tutto quello che sta sotto la root?
    Il modo più semplice: settare al model una radice null (si può fare, vuol dire che l'albero è vuoto!) o al massimo settare un nuovo nodo (senza discendenti) come radice se vuoi che si veda comunque una radice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    grazie
    "Considerate la vostra semenza:
    fatti non foste a viver come bruti,
    ma per seguir virtute e canoscenza''."
    Dante Alighieri

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.