Bonjour,
J'aimerai recupérer la valeur d'un des label de mon JTree, j'utilise pour cela TreeSelectionListener et la méthode ValueChanged.

Voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
racine = new DefaultMutableTreeNode("users"); ///on fait la racine de notre arbre
		user_tree = new JTree(racine);
		user_tree.addTreeSelectionListener(new TreeSelectionListener() { //classe anonyme
			public void valueChanged(TreeSelectionEvent event) {
				if(user_tree.getLastSelectedPathComponent() != null){
					String pseudo = user_tree.getLastSelectedPathComponent().toString();
					onglet_update(pseudo);
					System.out.println(pseudo);
				}
 
		}});
Le problème c'est que la méthode n'est jamais appelée.

Voici le code complet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.net.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.tree.*;
import javax.swing.event.*;
 
public class fenetre extends JApplet {
 
JOptionPane jop;
JPanel p1;
JPanel p2;
JPanel pan_boutton;
static JPanel pan_user;
JPanel pan_final;
JButton envoyer, quitter;
JTextArea envoie;
static JTextArea affichage;
BorderLayout l1;
GridLayout l2;
BorderLayout l3;
BorderLayout l4;
JScrollPane scroll;
JScrollPane scroll2;
static JTree user_tree;
static DefaultMutableTreeNode racine;
static JTabbedPane onglet;
 
static Socket client;
 
	public void init() {
 
		//ARBRE
		racine = new DefaultMutableTreeNode("users"); ///on fait la racine de notre arbre
		user_tree = new JTree(racine);
		user_tree.addTreeSelectionListener(new TreeSelectionListener() { //classe anonyme
			public void valueChanged(TreeSelectionEvent event) {
				if(user_tree.getLastSelectedPathComponent() != null){
					String pseudo = user_tree.getLastSelectedPathComponent().toString();
					onglet_update(pseudo);
					System.out.println(pseudo);
				}
 
		}});
 
		//AFFICHAGE
		affichage = new JTextArea("Bienvenu sur le chat");
		affichage.setRows(20);
		affichage.setColumns(30);
		affichage.setEditable(false);
		affichage.setLineWrap(true);
		scroll = new JScrollPane(affichage);
		scroll.setVerticalScrollBarPolicy(scroll.VERTICAL_SCROLLBAR_AS_NEEDED);
		scroll.setHorizontalScrollBarPolicy(scroll.HORIZONTAL_SCROLLBAR_NEVER);
 
		//PANNEAU 1
		p1 = new JPanel();
		l1 = new BorderLayout();
		p1.setLayout(l1);
		p1.add(scroll, l1.NORTH); //on prepare le panneau et on met la fenetre d'affichage au nord
 
		//PANNEAU BOUTTON
		pan_boutton = new JPanel();
		envoyer = new JButton("Envoyer");
		envoyer.addActionListener(new envoyer());
		quitter = new JButton("Quitter");
		l2 = new GridLayout(1, 2);
		pan_boutton.setLayout(l2);
		pan_boutton.add(envoyer);
		pan_boutton.add(quitter);
 
		//PANNEAU BOUTTON + ENVOIE
		p2 = new JPanel();
		l3 = new BorderLayout();
		p2.setLayout(l3);
		envoie = new JTextArea();
		envoie.setRows(3);
		envoie.setLineWrap(true);
		scroll2 = new JScrollPane(envoie);
		scroll2.setVerticalScrollBarPolicy(scroll2.VERTICAL_SCROLLBAR_AS_NEEDED);
		scroll2.setHorizontalScrollBarPolicy(scroll2.HORIZONTAL_SCROLLBAR_NEVER);
		p2.add(scroll2, l3.NORTH); //au nord la zone de saisie
		p2.add(pan_boutton, l3.SOUTH); //on rajoute ici les boutton
 
		p1.add(p2, l1.SOUTH); //on ajoute le tableau au sud
 
		//USER
		pan_user = new JPanel();
 
		//PANNEAU FINAL
		l4 = new BorderLayout();
		pan_final = new JPanel();
		pan_final.setLayout(l4);
		pan_final.add(p1, l4.WEST);
		pan_final.add(pan_user, l4.EAST); //on rajoute le panneau user et le panneau standar a la fenetre
 
		onglet = new JTabbedPane();
		onglet.add(pan_final, "principal");
		this.setContentPane(onglet);
		this.setSize(500, 400);
 
		//on recupere le pseudo de la personne
		String pseudo = jop.showInputDialog(null, "Votre pseudo: ", "chat_okami", JOptionPane.QUESTION_MESSAGE);
 
		Thread t = new Thread(new thread_connection(pseudo));
		t.start(); //on etablit la connection
	}
 
	public static void reception(String message) { //methode de reception
		try {
			String ancien = affichage.getText();
			message = ancien + "\n" + message;
			affichage.setText(message);
		}catch(Exception e) { e.printStackTrace(); }
	}
 
	public void user_update(Vector users) {
		racine.removeAllChildren();//on enleve tout ce qu'il y avai
		for(int i = 0 ; i < users.size() ; i++) { //on parcourt le tableau
			DefaultMutableTreeNode rep = new DefaultMutableTreeNode(users.elementAt(i));
			racine.add(rep); //a chaqe foi on rajoute a la racine
		}
		user_tree = new JTree(racine);
		user_tree.repaint();
		pan_user.removeAll(); //on oublie pas d'enlever les anciens arbres
		pan_user.add(user_tree);
		pan_user.revalidate();
		user_tree.revalidate();
	}
 
	public void onglet_update(String pseudo) {
		onglet.add(new JPanel(), pseudo);
	}
 
	public class envoyer implements ActionListener { // le listener pour l'envoie
		public void actionPerformed(ActionEvent e) {
			try {
			String message = envoie.getText();
			envoie.setText("");
			if(message != null) {
				Thread t = new Thread(new thread_envoie(client, message));
				t.start();
			}
			}catch(Exception er) {er.printStackTrace(); }
		}
	}//fin class envoyer
 
 
} //fin classe principale
Qelqu'un sait il pourquoi ma méthode valuechanges n'est jamais appelée lorsque je clique sur un label du jtree?

Merci d'avance