Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changement dynamique de JTree

1 réponse
Avatar
Jérôme VUIBERT
Bonjour à tous.

Mon applet doit lire un fichier XML et représenter certains de ses éléments
sous forme de JTree.
L'adresse du fichier est passé en paramètre de l'applet initialement.

Je dois pouvoir aussi lui indiquer un changement de fichier, ce que je fais
à travers une fonction JavaScript qui appelle la méthode updateTree de la
classe de mon applet.

Après le chargement des données du fichier XML et du nouveau TreeModel, je
n'arrive pas à rafraîchir la représentation de l'arbre, et perds les
événements de sélection sur l'arbre.

Quelles sont mes erreurs ? Que dois-je faire pour corriger cela ?

A la suite vous trouverez les méthodes init et updateTree que j'ai
implémentée pour vous aider à comprendre.

Merci d'avance pour votre aide.

Jerome


===========================

public void init()
{
.....
// Get m_szFilePath as applet parameter

// Creation de la racine et des noeuds
updateTree(m_szFilePath);


m_tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_S
ELECTION);
m_tree.setShowsRootHandles(false);
m_tree.addTreeSelectionListener(this);
ToolTipManager.sharedInstance().registerComponent(m_tree);

ImageIcon l_leafIcon = createImageIcon("img/lo_rouge.gif");

if (l_leafIcon != null)
{
m_tree.setCellRenderer(new MyRenderer(l_leafIcon));
}

JScrollPane l_treeScrollPane = new JScrollPane(m_tree);
Container l_contentPane = getContentPane();

if (m_treeScrollPane != null)
{
l_contentPane.remove(m_treeScrollPane);
}

l_contentPane.add(l_treeScrollPane);
m_treeScrollPane = l_treeScrollPane;

}

public void updateTree(String m_szFilePath)
{
// This class reads the XML File, adn create a tree model from it
K6OPTreeModel l_treeModel = new K6OPTreeModel(m_szFilePath);
m_tree = new JTree(l_treeModel);
}

1 réponse

Avatar
Armel HERVE
In article <403e19c5$0$28128$,
says...
Bonjour à tous.

Mon applet doit lire un fichier XML et représenter certains de ses él éments
sous forme de JTree.
L'adresse du fichier est passé en paramètre de l'applet initialement.

Je dois pouvoir aussi lui indiquer un changement de fichier, ce que je fa is
à travers une fonction JavaScript qui appelle la méthode updateTree d e la
classe de mon applet.

Après le chargement des données du fichier XML et du nouveau TreeMode l, je
n'arrive pas à rafraîchir la représentation de l'arbre, et perds le s
événements de sélection sur l'arbre.

Quelles sont mes erreurs ? Que dois-je faire pour corriger cela ?

A la suite vous trouverez les méthodes init et updateTree que j'ai
implémentée pour vous aider à comprendre.

Merci d'avance pour votre aide.

Jerome


======================== ===

public void init()
{
.....
// Get m_szFilePath as applet parameter

// Creation de la racine et des noeuds
updateTree(m_szFilePath);


m_tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TRE E_S
ELECTION);
m_tree.setShowsRootHandles(false);
m_tree.addTreeSelectionListener(this);
ToolTipManager.sharedInstance().registerComponent(m_tree);

ImageIcon l_leafIcon = createImageIcon("img/lo_rouge.gif");

if (l_leafIcon != null)
{
m_tree.setCellRenderer(new MyRenderer(l_leafIcon));
}

JScrollPane l_treeScrollPane = new JScrollPane(m_tree);
Container l_contentPane = getContentPane();
public void updateTree(String m_szFilePath)
{
// This class reads the XML File, adn create a tree model from it
K6OPTreeModel l_treeModel = new K6OPTreeModel(m_szFilePath);
m_tree = new JTree(l_treeModel);
}


C'est tout à fait normal que tu perde les événements puisque tu cré es un
nouveau JTree.
La solution plus élégante serait de raffraichir le modèle en enlevant ce
qui n'y est plus et en ajouttant les nouveaux noeuds.