[Java] capturer click droit sur JTree
Florian
-
chaofa -
chaofa -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Logiciels
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
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