JMenuItem ActionListener

Status
Nicht offen für weitere Antworten.

Coder21

Aktives Mitglied
Hallo,

ich habe mehrere JMenuItems, alle mit dem gleichen ActionListener.
Nun will ich herausfinden von welchem JMenuItem das Event ausgeht.

Folgendes habe ich schon ausprobiert, hat aber nicht funktioniert:
Code:
JMenuItem gelb=new JMenuItem("Gelb");
JMenuItem rot=new JMenuItem("Rot");
gelb.addActionListener(this);
rot.addActionListener(this);
...

public void actionPerformed(ActionEvent event)
{
     if(event.getSource()==rot)
     ...
}

Ich habe mir schon das Tutorial hier durchgelesen, bei dem diese Methode beschrieben wird, aber irgendwie klappt's bei mir einfach nicht!

Da ich mehrere JMenuItems mit gleichem Text habe, kann ich event.getActionCommand() nicht verwenden.

Danke schonmal für eure Antworten! :wink:
 

The_S

Top Contributor
was heißt "klappt nicht"? Fehlermeldung? Fehlverhalten? Normal sollte das so gehen. Code schaut korrekt aus.
 

mikachu

Top Contributor
ich will mich jez nicht auf all zu dünnes eis begeben, aber probier mal statt dem doppel-ist-gleich ein equals()
 
G

Gast2

Gast
dürfte eigentlich kein unterschied machen aber veruschs mal mit equals
 

Coder21

Aktives Mitglied
Auch equals() funktioniert nicht und der ActionListner ist implementiert, sonst würde ja
Code:
rot.addActionListner(this);
eine Fehlermeldung erzeugen.
 

The_S

Top Contributor
Es macht auch keinen Unterschied. Lass dir in der actionPerformed doch einfach mal das aktuelle Objekt anzeigen. Dann siehst du ja, welches selektiert wurde.
 

The_S

Top Contributor
Naja, z. B. den Text des Elements ausgeben lassen. Damit kannst du überprüfen, ob auch das richtige übergeben wird.
 
G

Gast2

Gast
debuge doch einfach mal durch und schau mit inspect deine bedinung an!!!
oder hast du nach dem if() ';' gesetzt
 

Coder21

Aktives Mitglied
Also bei folgendem:
Code:
public void actionPerformed(ActionEvent e)
{
     System.out.println(e);
}

erhalte ich die Ausgabe:
java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Rot,when=1188817911078,modifiers=Button1] on javax.swing.JMenuItem[,1,87,111x21,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@a39137,
flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,
margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,
pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Rot]
 

Coder21

Aktives Mitglied
Code:
public void actionPerformed(ActionEvent event)
{
     	if(event.getSource()==rot)
		System.out.println("Rot");
}

Ich bin jetzt nur etwas durcheinander gekommen mit rot und gelb.
 

The_S

Top Contributor
ja und? Ich wollte wissen ob es jetzt geht ...

Wie kann man mit rot und gelb durcheinander kommen? :lol: es sei denn du hast sowas fabriziert

Code:
rot = new JMenuItem("Gelb");
gelb = new JMenuItem("Rot");
rot.setForeground(Color.red);
rot.setBackground(Color.yellow);
gelb.setForeground(Color.yellow);
gelb.setBackground(Color.red);

;)
 
G

Gast2

Gast
oder versuch es mal so in der art....
Code:
public class test extends JFrame implements ActionListener
{
	private JMenu menu;
	private JMenuBar bar;
	private JMenuItem rot;
	private JMenuItem gelb;
	public test()
	{
		bar=new JMenuBar();
		
		menu=new JMenu("Rot/Gelb");
		rot=new JMenuItem("Rot");
		rot.addActionListener(this);
		gelb=new JMenuItem("Gelb");
		gelb.addActionListener(this);
		menu.add(rot);
		menu.add(gelb);
		bar.add(menu);
	setJMenuBar(bar);
	setSize(400,400);
	setVisible(true);
	}
	


	public void actionPerformed(ActionEvent event) {
		if(event.getSource()==rot)
		{
			System.out.println("ROT");
		}
		
	}
	
	public static void main(String [] args)
	{
		new test();
	}

	
}
 

Coder21

Aktives Mitglied
Hier ein KSKB:

Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Beispiel extends JFrame implements ActionListener
{
	JTextField tf=new JTextField("Farbe auswählen");
	JMenuBar mbr=new JMenuBar();
	public Beispiel()
	{
		setSize(400,200);
		setLayout(new GridLayout(4,1));
		mbr.add(Farbe());
		setJMenuBar(mbr);
		add(tf);
		setVisible(true);
	}
	JMenuItem rot;
	JMenuItem gelb;
	public JMenu Farbe()
	{
		JMenu Farbe = new JMenu("Farbauswahl");
		JMenuItem rot=new JMenuItem("Rot");
		JMenuItem gelb=new JMenuItem("Gelb");
		rot.addActionListener(this);
		gelb.addActionListener(this);
		Farbe.add(rot);
		Farbe.add(gelb);
		return Farbe;
	}
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==gelb)
			tf.setText("GELB ausgewählt");
		else if(e.getSource()==rot)
			tf.setText("ROT ausgewählt");
	}
	public static void main(String[] args)
	{
		new Beispiel();
	}
}
 

The_S

Top Contributor
Also dein erstes Beispiel funktioniert bei mir ohne Probleme. Deshalb hab ich dein zweites auch erst gar nicht ausprobiert.

[edit] Achso, das 1. is ja gar net von dir ^^. Mom
 
G

Gast2

Gast
das 1. ist von mir :)

1. attribute schreibt man klein genausowie der methoden anfang
2. attribute schreibt man am anfang einer klasse und warum schreibst du
JMenuItem rot=.....

lass das JMenuItem weg....
 

Coder21

Aktives Mitglied
Das erste Beispiel ist nicht von mir. Das funktioniert auch bei mir, aber mein Beispiel funktioniert nicht!
 
G

Gast2

Gast
Code:
package test;
import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 

public class Beispiel extends JFrame implements ActionListener 
{ 
   JTextField tf;
   JMenuBar mbr=new JMenuBar(); 
   JMenuItem rot; 
   JMenuItem gelb; 
   public Beispiel() 
   { 
      
      setLayout(new GridLayout(4,1));
      
      tf=new JTextField("Farbe auswählen");
      mbr.add(getMenu() ); 
      setJMenuBar(mbr); 
      getContentPane().add(tf); 
      setSize(400,200); 
      setVisible(true); 
   } 

   public JMenu getMenu() 
   { 

    //Schau dir das hier nochmal an und vergleich es mit deinem 
      JMenu farbe = new JMenu("Farbauswahl"); 
      rot=new JMenuItem("Rot"); 
      gelb=new JMenuItem("Gelb"); 
      rot.addActionListener(this); 
      gelb.addActionListener(this); 
      farbe.add(rot); 
      farbe.add(gelb); 
      return farbe; 
   } 
   public void actionPerformed(ActionEvent e) 
   { 
      if(e.getSource()==gelb) 
         tf.setText("GELB ausgewählt"); 
     
      if(e.getSource()==rot) 
         tf.setText("ROT ausgewählt"); 
   } 
   public static void main(String[] args) 
   { 
      new Beispiel(); 
   } 
}
 

The_S

Top Contributor
Dein Beispiel kann auch gar nicht funktionieren, da rot und gelb keine Klassenvariablen sind. Bzw. weil du die Klassenvariablen nicht verwendest, sondern neue Objekte erzeugst.
 
G

Gast2

Gast
doch sie sind klassenvariabeln schau mal vor die Methode Farbe :) :) er hat sie mitten rein geschrieben :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
M Swing JMenuItem und der ActionListener AWT, Swing, JavaFX & SWT 2
O Verstehe ActionListener in Verbindung mit JMenuItem AWT, Swing, JavaFX & SWT 4
G identische JMenuItem im actionListener unterscheiden AWT, Swing, JavaFX & SWT 4
B ActionListener JMenuItem AWT, Swing, JavaFX & SWT 2
B ActionListener/JMenuItem/getSource() . AWT, Swing, JavaFX & SWT 5
J JMenuItem und ActionListener AWT, Swing, JavaFX & SWT 3
J Swing JMenuItem blockiert JMenuBar AWT, Swing, JavaFX & SWT 2
F JMenuItem mit KeyStroke kombinieren AWT, Swing, JavaFX & SWT 1
javampir Look&Feel von JMenuItem AWT, Swing, JavaFX & SWT 3
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
K JMenuItem-Shortcut WENN Menüleiste verborgen ist AWT, Swing, JavaFX & SWT 4
M Accelerator zu JMenuItem des JPopupMenu einer JList AWT, Swing, JavaFX & SWT 2
J Swing JMenuItem-Event?? AWT, Swing, JavaFX & SWT 3
J Swing JMenuItem auf setEnabled(false) setzen? AWT, Swing, JavaFX & SWT 3
B JMenuItem Anzeigeproblem AWT, Swing, JavaFX & SWT 6
E Swing JTextField als JMenuItem AWT, Swing, JavaFX & SWT 3
G PopupMenu für ein JmenuItem AWT, Swing, JavaFX & SWT 3
N Swing Nimbus arbeitet nicht korrekt korrekt bei setEnabled() für JMenuItem AWT, Swing, JavaFX & SWT 2
F JMenuItem exit AWT, Swing, JavaFX & SWT 2
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
sylo Position des Icons bei JMenuItem AWT, Swing, JavaFX & SWT 11
Semox Swing JMenuItem-Auswahl mit Aktion ausführen AWT, Swing, JavaFX & SWT 4
pinerski Probleme mit JPopupMenu und JMenuItem AWT, Swing, JavaFX & SWT 7
T Problem mit KeyStroke auf JMenuItem (1.4.2 <-> 6) AWT, Swing, JavaFX & SWT 3
T Von JMenuItem setText auf JButton AWT, Swing, JavaFX & SWT 2
ModellbahnerTT JMenuItem AWT, Swing, JavaFX & SWT 5
G JMenuItem und Accelerator AWT, Swing, JavaFX & SWT 14
Iron Monkey JPopupMenu/JMenuItem Index für getSubElements()[] ermitteln AWT, Swing, JavaFX & SWT 8
0 JMenuItem nicht in zwei JMenus möglich? AWT, Swing, JavaFX & SWT 2
G JMenuItem & AbstractAction = Problem? AWT, Swing, JavaFX & SWT 2
F ID zu JMenuItem AWT, Swing, JavaFX & SWT 7
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
Z JMenuItem AWT, Swing, JavaFX & SWT 2
DeeDee0815 F-Taste auf JMenuItem legen AWT, Swing, JavaFX & SWT 2
padde479 JMenuItem mit Image AWT, Swing, JavaFX & SWT 2
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
S java.lang.verifyError beim Casten nach JMenuItem AWT, Swing, JavaFX & SWT 13
B JMenuItem AWT, Swing, JavaFX & SWT 2
S Öffnen eines JDialog über JMenuItem / Fenster zu viel. AWT, Swing, JavaFX & SWT 2
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
G Freiraum bei JMenuItem mit Icon AWT, Swing, JavaFX & SWT 4
F Darstellung von Tastaturkürzel in JMenuItem AWT, Swing, JavaFX & SWT 13
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Häkchen bei JMenuItem? AWT, Swing, JavaFX & SWT 6
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben