JSplitPane und MousListener

Status
Nicht offen für weitere Antworten.

multiholle

Aktives Mitglied
Ich möchte beim Rechtsklick auf den Balken eines JSplitPane ein Kontextmenü öffnen. Dafür habe ich einen MousListener zum JSplitPane hinzugefügt und die Funktion mouseReleased verwendet. Nur leider wird die Funktion nicht aufgefrufen. Muss ich einen anderen Listener verwenden?
 
Der MouseListener liefert ja dann einen BasicSplitPaneDivider. Wie kann ich davon wieder auf das SplitPane zugreifen?
 
Die API Dokumentation enthält BasicSplitPaneDivider#getBasicSplitPaneUI() und BasicSplitPaneUI#getSplitPane().
Würde ich nicht so machen. Mit einem anderen LookAndFeel kann das schief gehen. Besser: [HIGHLIGHT="Java"]final Component comp = (Component) event.getSource();
final JSplitPane splitPane = (JSplitPane) SwingUtilities.getAncestorOfClass(JSplitPane.class, comp);[/HIGHLIGHT]
Ebenius
 
Müssten wir dann nicht auch eine Alternative finden, um überhaupt an den Divider zu kommen?
Ja, müssten wir. Hab ich oben allerdings gar nicht gelesen. 🙂

Aber ich glaube kaum, dass die BasicXXXUI Klassen ein Problem werden können. Afaik bauen die LAFs alle darauf auf.
Keine Ahnung, ob Sie das tun. Ich verlass mich nicht drauf, wenn ich nicht muss. 😀

Der bessere Weg Popup-Menüs zu bauen ist: [HIGHLIGHT="Java"]final JSplitPane splitPane = new JSplitPane();
splitPane.setInheritsPopupMenu(true);

final JPopupMenu popup = new JPopupMenu("Popup");
popup.add(new AbstractAction("Do something") {

public void actionPerformed(ActionEvent e) {
System.out.println(e.getSource());
}
});
splitPane.setComponentPopupMenu(popup);[/HIGHLIGHT]
Zumindest im Metal L&F funktioniert das auch auf dem Divider.

Ebenius
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben