G
Gast2
Gast
Hallo ich habe folgendes Problem. Ich möchte ein Popup Menü bei Rechtsklick auf ein JMenuItem anzeigen lassen.
Das Problem ist nur, dass ein JMenuItem nach einem Klick ja sofort verschwindet und somit das popupMenu.show(...) eine Exception wirft.
Hier mein Code:
Zur Laufzeit kommt dann die Exception:
Hat jemand einen Vorschlag wie man das umsetzen kann?
Das Problem ist nur, dass ein JMenuItem nach einem Klick ja sofort verschwindet und somit das popupMenu.show(...) eine Exception wirft.
Hier mein Code:
Java:
...
JmenuItem readParams = new JMenuItem("readParans");
readParams.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
//irrelevant
}
});
final JPopupMenu contextMenu = new JPopupMenu();
contextMenu.add(new JMenuItem("Help"));
readParams.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent evt) {
showPopup(evt);
}
public void mousePressed(MouseEvent evt) {
showPopup(evt);
}
private void showPopup(MouseEvent evt) {
if (evt.isPopupTrigger()) {
Component comp = evt.getComponent();
int x = evt.getX();
int y = evt.getY();
contextMenu.show(comp, x, y);
}
}
});
...
Zur Laufzeit kommt dann die Exception:
Java:
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1964)
at java.awt.Component.getLocationOnScreen(Component.java:1938)
at javax.swing.JPopupMenu.show(JPopupMenu.java:887)
at //hier ist meine Klasse
Hat jemand einen Vorschlag wie man das umsetzen kann?