Rechter Mausklick im Tree

jorgeHX

Erfahrenes Mitglied
Hallo zusammen,
ich habe mal ne kurze und für euch, so denke ich, einfache Frage.

Wenn ich mit der rechten Maustaste in meinen Tree klicke, soll sich ein PopUp öffnen. Das habe ich auch alles hinbekommen, nur leider markiert sich nicht der mit der rechten Maustaste angeklickte Zweig im Baum.
Vergesse ich da irgendwas?
Wenn man mit der linken Maustaste draufklickt, markiert sich der Zweig ja auch.
Zum öffnen des PopUps nutze ich den PopupTrigger()

Hoffentlich kann mir jemand helfen,
danke,
Jörg
 
Hallo!

Veruschs mal hiermit:

Code:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;

/*
 * Created on 17.07.2004
 *
 * TODO 
 */

/**
 * @author Administrator TODO Describe what the class is used for
 */
public class JTreeExample extends JFrame {

    private final JTree tree;

    private final JScrollPane scrollPane;

    public JTreeExample() {
        super("JTreeExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        tree = new JTree();
        tree.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent evt) {
                final int x = evt.getX();
                final int y = evt.getY();
                
                 // evt.isPopupTrigger()
                // scheint hier nicht richtig zu funktionieren...
                if (SwingUtilities.isRightMouseButton(evt)) {
                    int pos = tree.getRowForLocation(x, y);
                    tree.setSelectionRow(pos);
                    System.out.println(tree.getSelectionPath()
                            .getLastPathComponent());
                }
            }
        });

        scrollPane = new JScrollPane();
        scrollPane.setSize(320, 240);
        scrollPane.setViewportView(tree);

        getContentPane().add(scrollPane);

        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new JTreeExample();
    }
}

Gruß Tom
 
danke für deine Antwort, aber ich würde gerne irgendwie den PopupTrigger einbauen, da die Funktion eines rechten Mausklicks ja beispielsweise bei einem Mac anders ausfällt.
Dann ist natürlich wieder das Problem, dass der Mauszweig nicht markiert ist.
Vielleicht hat ja noch jemand eine Idee.
Danke
 
Original geschrieben von jorgeHX
danke für deine Antwort, aber ich würde gerne irgendwie den PopupTrigger einbauen, da die Funktion eines rechten Mausklicks ja beispielsweise bei einem Mac anders ausfällt.
Dann ist natürlich wieder das Problem, dass der Mauszweig nicht markiert ist.
Vielleicht hat ja noch jemand eine Idee.
Danke

In Thomas' code steht es eigentlich drin, wie man über den PopUpTrigger geht:

// evt.isPopupTrigger()

Warum es bei ihm nicht funktioniert, weiss ich nicht, aber das ist der richtige Weg. MouseEvents sind manchmal etwas merkwürdig. Mal muss man auf ein mouseClicked reagieren, mal auf ein mouseReleased. Probier einfach mal aus.
 
Danke Jungs,
hab es hinbekommen.
Mit dem PopupTrigger() ging es ganz einfach.
Der Trigger reagiert nur auf MouseReleased... :)
 
Original geschrieben von jorgeHX
Danke Jungs,
hab es hinbekommen.
Mit dem PopupTrigger() ging es ganz einfach.
Der Trigger reagiert nur auf MouseReleased... :)

Na siehste. wie ich schon sagte: Ist manchmal etwas merkwürdig. ;)
*Schlag-in-Thomas'-Hand-ein* Prima Teamwork :)
 

Neue Beiträge

Zurück