Hallo,
ich möchte ein JPopupMenu auf einem JTabbedPane haben. Eigentlicht recht einfach nur möchte ich das sich das PopupMenu NUR auf den Tabs öffnet. Das heißt es soll nicht angezeigt werden wenn man in den Content des JTabbedPane's klickt und auch nicht wenn man auf die Leiste klickt, wo die Tab's angezeigt werden.
Das Popupmenu soll zum schließen der Tab's sein dadurch wirds vllt klarer was ich haben will.
Ich habe auch schon eine Lösung gefunden die eigentlicht genau das richtige ist. Sie müsste nur ein wenig verändert werden.
Ich hab die Stelle im Quellcode kommentiert, ich muss irgendwie verhinden das dass Popupmenu angezeigt wird. Da muss es doch irgendwie eine Lösung geben.
Gruß
ich möchte ein JPopupMenu auf einem JTabbedPane haben. Eigentlicht recht einfach nur möchte ich das sich das PopupMenu NUR auf den Tabs öffnet. Das heißt es soll nicht angezeigt werden wenn man in den Content des JTabbedPane's klickt und auch nicht wenn man auf die Leiste klickt, wo die Tab's angezeigt werden.
Das Popupmenu soll zum schließen der Tab's sein dadurch wirds vllt klarer was ich haben will.
Ich habe auch schon eine Lösung gefunden die eigentlicht genau das richtige ist. Sie müsste nur ein wenig verändert werden.
Java:
popupMenu = new JPopupMenu();
menuItem1 = new JMenuItem("schließen");
tabbedPane = new JTabbedPane();
tabbedPane.setComponentPopupMenu(popupMenu);
label1 = new JLabel("Label1");
label2 = new JLabel("Label2");
popupMenu.add(jMenuItem1);
tabbedPane.addTab("Tab 1", label1);
tabbedPane.addTab("Tab 2", label2);
popupMenu.addPopupMenuListener(new PopupMenuListener() {
public void popupMenuCanceled(final PopupMenuEvent evt) {}
public void popupMenuWillBecomeInvisible(final PopupMenuEvent evt) {}
public void popupMenuWillBecomeVisible(final PopupMenuEvent evt) {
JPopupMenu source = (JPopupMenu) evt.getSource();
int i = tabbedPane.getSelectedIndex();
JLabel tab = (JLabel) tabbedPane.getTabComponentAt(i);
JLabel component = (JLabel) tabbedPane.getComponentAt(i);
if(tab.getMousePosition() != null) {
menuItem1.setText(tab.getText() + ": " + component.getText());
}else{
// Hier wurde nicht auf einen Tab geklickt, das anzeigen des Popupmenu's soll also verhindert werden!
}
}
});
Ich hab die Stelle im Quellcode kommentiert, ich muss irgendwie verhinden das dass Popupmenu angezeigt wird. Da muss es doch irgendwie eine Lösung geben.
Gruß