# JTree + rechte Maustaste



## Guest (25. Apr 2006)

Hi,

wie kann ich dem JTree mitteilen (manuell basteln), dass er auch das mit der rechten Maustaste geklickte Blatt/den geklickten Knoten markieren soll?

Ich habe weder eine Methode gefunden um die rechte Maustaste zu aktivieren, noch eine um die Koordinaten in einen TreePath umzuwandeln   .

Danke für die Hilfe!


----------



## SamHotte (25. Apr 2006)

Du baust dir für den Baum einen MouseListener:


```
public class MeinMouseListener
    extends MouseAdapter
{

  private JTree jTree;
  private JPopupMenu jPopup;

  public MeinMouseListener(JTree tree, JPopupMenu menu) {
    this.jTree = tree;
    this.jPopup = menu;
  }

  /**
   * Reagiert auf das loslassen der Maustasten.
   * 
   * @param evt mouse event
   */
  public final void mouseReleased (final MouseEvent evt)
  {
    // right mouse click
    if (evt.isPopupTrigger()) {
      // das unter der Maus liegende Element selektieren
      TreePath selPath = this.jTree.getPathForLocation(evt.getX(), evt.getY());
      TreeNode node = (TreeNode) selPath.getLastPathComponent();
      // Knoten selektieren
      TreeModel model = (TreeModel) this.jTree.getModel();
      TreeNode[] nodes = model.getPathToRoot(node);
      TreePath path = new TreePath(nodes);
      makeVisible(path);
      scrollPathToVisible(path);
      setSelectionPath(path);
      // Popup-Menu zeigen
      this.jPopup.show(evt.getComponent(), evt.getX(), evt.getY());
    }
    // Doppelklick
    if (evt.getClickCount() == 2) {
      // entsprechende Aktion
    }
  }

}
```

_edit: durch cut'n'paste entstandene Fehlerchen bereinigt im Code_


----------



## Gast (25. Apr 2006)

getPathForLocation ...

das war genau die Methode die ich gesucht habe. Danke.


----------

