[Java] capturer click droit sur JTree
Fermé
Salut à tous, je cherche à capturer un click droit sur un JTree, afin d'afficher un menu contextuel correspondant au noeud cliqué. Je n'arrive pas à trouver dans les sources de la JVM l'endroit où le click gauche qui sélectionne les noeuds est capturé. Merci à tous.
A voir également:
- [Java] capturer click droit sur JTree
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Java runtime environment - Télécharger - Langages
3 réponses
J'ai une meilleur solution, beaucoup plus simple ... OUF
<pre>
private void addMyRightListener(final JTree tree) {
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
// System.out.println("click Right");
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if (selRow != -1) {
tree.clearSelection();
tree.setSelectionPath(selPath);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
// System.out.println("Objet : "+node.getUserObject());
// Affichage du popup adéquat
}
}
}
};
tree.addMouseListener(ml);
}
</pre>
désolé pour l'allignement !!!!
Ermelin
<pre>
private void addMyRightListener(final JTree tree) {
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
// System.out.println("click Right");
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if (selRow != -1) {
tree.clearSelection();
tree.setSelectionPath(selPath);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
// System.out.println("Objet : "+node.getUserObject());
// Affichage du popup adéquat
}
}
}
};
tree.addMouseListener(ml);
}
</pre>
désolé pour l'allignement !!!!
Ermelin
choubaka
Messages postés
39426
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
28 avril 2025
2 104
13 févr. 2005 à 19:56
13 févr. 2005 à 19:56
Salut
Toi utliser dans tes listeners, un MouseAdapter qui utilise les MouseEvent
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/MouseEvent.html
Toi utliser dans tes listeners, un MouseAdapter qui utilise les MouseEvent
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/MouseEvent.html
Le problème est que ce ne sont pas les "DefaultMutableTreeNode" (DMTN) mais le JTree qui reçoit l'event, d'où l'impossibilité, par clic droit, de savoir quelle est le noeud, ou la feuille sur laquelle le clic droit est fait. Les DMTN extends JLabel, qui lui ne peut recevoir aucun event de la part de la souris.
J'arrive à capturer le clic droit sur le JTree, mais après? comment récupérer le DMTN sur lequel porte le clic?
J'arrive à capturer le clic droit sur le JTree, mais après? comment récupérer le DMTN sur lequel porte le clic?
Dans votre Listener :
1. envoyer un clic gauche (modifier juste l'event) et laisser faire le listener par default en cas de click gauche (Votre listener ne doit réagir qu'au click droit)
2. récupération de l'élément sélectionné
3. affichage de votre popup en fonction de l'objet trouvé
Voici pour le point 2
public Object getSelectedObject() {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) votreJTree.getLastSelectedPathComponent();
return (node == null ? null : node.getUserObject());
}
1. envoyer un clic gauche (modifier juste l'event) et laisser faire le listener par default en cas de click gauche (Votre listener ne doit réagir qu'au click droit)
2. récupération de l'élément sélectionné
3. affichage de votre popup en fonction de l'objet trouvé
Voici pour le point 2
public Object getSelectedObject() {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) votreJTree.getLastSelectedPathComponent();
return (node == null ? null : node.getUserObject());
}
Salut,
j'ai utilisé votre méthode et ça marche tres bien!
je vous remercie beaucoup, c'est ce que je cherché depuis quelques temps
merci beaucoup
j'ai juste une uatre question à propos de Jtree!
je réalise une application pour composer des web services alors l'user sélectionne un ensemble de services web, apres je les affiche dans un jtree pour les détailler, operations, entrés et sorties...
je voudrais personnaliser les icones des noeuds spécifiques, une icone pour service web une autre pour tt les entrées...
et type de données...
avec cellRedendrer je n'ai pu que modifier les icones des noeuds fermants, ouvrants et feuilles,
pouvez vous m'aider s'il vous plait!!!
merci beaucoup
j'ai utilisé votre méthode et ça marche tres bien!
je vous remercie beaucoup, c'est ce que je cherché depuis quelques temps
merci beaucoup
j'ai juste une uatre question à propos de Jtree!
je réalise une application pour composer des web services alors l'user sélectionne un ensemble de services web, apres je les affiche dans un jtree pour les détailler, operations, entrés et sorties...
je voudrais personnaliser les icones des noeuds spécifiques, une icone pour service web une autre pour tt les entrées...
et type de données...
avec cellRedendrer je n'ai pu que modifier les icones des noeuds fermants, ouvrants et feuilles,
pouvez vous m'aider s'il vous plait!!!
merci beaucoup