Swing Bei Buttonklick soll PopupMenu erscheinen

xadoX

Aktives Mitglied
Möchte gerne bei Klick auf einem Button das ein PopupMenu erscheint. Hier mein Code:

Der Klickt auf den Button ruf folgende Funktion in meiner GUI auf:

Java:
private void jButtonOpenBildActionPerformed(java.awt.event.ActionEvent evt) {
       JPopUpMenuBildAuswahl pop = new JPopUpMenuBildAuswahl();
    }

Die Klasse JPopUpMenuBildAuswahl sieht wie folgt aus:

Java:
public class JPopUpMenuBildAuswahl extends JPopupMenu implements ActionListener{
    JMenuItem menuItem1, menuItem2, menuItem3, menuItem4, menuItem5;   

    public JPopUpMenuBildAuswahl(){
        menuItem1 = new JMenuItem("Bild auswählen");
        add(menuItem1);
        menuItem1.addActionListener(this);
        menuItem2 = new JMenuItem("URL auswählen");
        add(menuItem2);
        menuItem2.addActionListener(this);
        addSeparator();
        menuItem3 = new JMenuItem("Öffnen");
        add(menuItem3);
        menuItem3.addActionListener(this);
        menuItem4 = new JMenuItem("Löschen");
        add(menuItem4);
        menuItem4.addActionListener(this);
        menuItem5 = new JMenuItem("Undo");
        add(menuItem5);
        menuItem5.addActionListener(this);
        setOpaque(true);
        setLightWeightPopupEnabled(true);

        addMouseListener(
            new MouseAdapter () {
                @Override
                public void mouseReleased(MouseEvent e) {
                    show((JComponent)e.getSource(), e.getX(), e.getY());
                }
            }
        );
    }


    public void actionPerformed(ActionEvent e) {
        System.out.println("actionPerformed");
        if(e.getSource() == menuItem1){
            System.out.println("menuItem1");
        }
        else if (e.getSource() == menuItem2){
            System.out.println("menuItem2");
        }
    }
}

Leider passiert beim Klick auf den Button nichts weiter.
 
Mhm, muss der Aufruf von show nicht eher im ActionListener passieren als im MouseListener des nicht sichtbaren Popups? 😀

z.B. also
Java:
private void jButtonOpenBildActionPerformed(java.awt.event.ActionEvent evt) {
      				JPopUpMenuBildAuswahl pop = new JPopUpMenuBildAuswahl();
				pop.show((JComponent)evt.getSource(), 10, 10);
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben