ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
1071
1071
EMPFEHLEN
-
15.12.08 11:14 #1
Hallo.
In meinem Kontextmenü habe ich diverse Buttons angeordnet, auf welche eine Aktion folgt. Zur Zeit ist diese Aktion noch ein System.out.println().
Es sieht wie folgt aus:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
frame.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent evt) { if (evt.isPopupTrigger()) { showMenu(evt); } } }); ... private JMenuItem cmap = new JMenuItem("Colormap"); private JMenuItem rmon = new JMenuItem("Restart Secmon"); private JMenuItem fprio = new JMenuItem("File Priorities"); public void showMenu(MouseEvent evt){ JPopupMenu menu = new JPopupMenu(); rmon.addActionListener(this); menu.add(rmon); cmap.addActionListener(this); menu.add(cmap); fprio.addActionListener(this); menu.add(fprio); menu.show(frame, evt.getX(), evt.getY()); }
Jetzt ist aber das Problem, dass er die Aktion, die im ActionListener hinterlegt ist (System.out....) so oft ausführt, wie seit Programmstart geklickt wurde. Also beim ersten Rechtsklick führt er die Aktion einmal aus. Beim zweiten Rechtsklick führt er sie 2 mal aus, beim dritten Rechtsklick führt er sie 3mal aus, und so weiter...
Weiss jemand an was das liegen kann?
Danke && Gruß
Thomas
PS: Mein ActionListener:
Code java:1 2 3 4 5 6 7 8 9 10
public void actionPerformed(ActionEvent e) { if (e.getSource() == cmap) { System.out.println("colormap wurde soeben geoeffnet!"); } else if (e.getSource() == rmon) { System.out.println("Secmon wird neu gestartet!"); } else if (e.getSource() == fprio) { System.out.println("Prioritätenliste geöffnet!"); } }
-
Du darfst den ActionListener natürlich nur einmal (z.B. beim Programmstart) hinzufügen, nicht bei jedem Aufruf des Menüs
-
Hallo,
das liegt daran, dass du jedesmal den ActionListener immer wieder hinzufügst. Das heißt, beim ersten mal hat der Button einen ActionListener. Beim zweiten Klick ist der gleiche ActionListener zweimal vorhanden usw. Deshalb wird der die actionPerformed auch öfter ausgeführt. Es reicht, wenn du die Listener einmal registrierst und auch das PopupMenu einmal erzeugst und immer wieder anzeigst.
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
15.12.08 16:34 #4
Ach du heiliger BimmBamm.
Ja that`s it!
Danke Leutz, manchmal sieht man vor lauter Bäumen den Wald nicht mehr.
Ähnliche Themen
-
Layout - ändern (kontext menü
Von digital art im Forum Cinema 4DAntworten: 2Letzter Beitrag: 22.12.09, 16:07 -
eigenes Kontext-Menü...
Von CHaoSlayeR im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 18.12.05, 06:32 -
Kontext(Arbeitsflächen)-menü anpassen
Von asmodis! im Forum Linux & UnixAntworten: 3Letzter Beitrag: 27.01.04, 23:09





Zitieren

Login





