# ActionListener bei JMenuItem



## Daimond (28. Jan 2013)

Hi,
Ich versuche grad einem JMenuItem einen ActionListener zu verpassen nur leider will er nicht so wie ich es gerne möchte. Nur leider kommt es zu folgende Fehler:
[Java]
Compiliere C:\Users\Thorsten\Desktop\HaPacman\Pacman.java mit Java-Compiler
HaPacman\Pacman.java:116:33: error: <identifier> expected
  menuItemGelb.addActionListener(new ActionListener() {
                                ^
HaPacman\Pacman.java:116:34: error: illegal start of type
  menuItemGelb.addActionListener(new ActionListener() {
                                 ^
HaPacman\Pacman.java:116:37: error: ')' expected
  menuItemGelb.addActionListener(new ActionListener() {
                                    ^
HaPacman\Pacman.java:116:52: error: ';' expected
  menuItemGelb.addActionListener(new ActionListener() {
                                                   ^
HaPacman\Pacman.java:116:53: error: illegal start of type
  menuItemGelb.addActionListener(new ActionListener() {
                                                    ^
HaPacman\Pacman.java:116:54: error: <identifier> expected
  menuItemGelb.addActionListener(new ActionListener() {
                                                     ^
HaPacman\Pacman.java:116:56: error: ';' expected
  menuItemGelb.addActionListener(new ActionListener() {
                                                       ^
HaPacman\Pacman.java:120:4: error: class, interface, or enum expected
  });
   ^
HaPacman\Pacman.java:121:1: error: class, interface, or enum expected
}
^
9 errors
[/Java]

Quellcode:
[Java]
package HaPacman;

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import java.lang.InterruptedException;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class Pacman{

  private JFrame frame;
  private DrawPanel panel;
  private JLabel text;
  private JMenuItem menuItemGelb;
  private JMenuItem menuItemPink;
  private JMenuItem menuItemPacMan;
  private JMenuItem menuItemMyPacMan;

  private void initGui() {
    frame = new JFrame("Pacman");
    text = new JLabel("Pac Man",JLabel.CENTER);
    text.setVisible(true);
    frame.add(BorderLayout.NORTH,text);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    JMenuBar menuBar = new JMenuBar();
    JMenu menuFarbe = new JMenu("Color");
    JMenu menuName = new JMenu("Name");
    JMenu menuNameAendern = new JMenu("Namen ändern");
    JMenu menuFarbeAendern = new JMenu("Farbe ändern");
    menuItemGelb = new JMenuItem("Gelb");
    menuItemPink = new JMenuItem("Pink");
    menuItemPacMan = new JMenuItem("Pac Man");
    menuItemMyPacMan = new JMenuItem("My Pac Man");

    menuBar.add(menuFarbe);
    menuBar.add(menuName);
    menuName.add(menuNameAendern);
    menuFarbe.add(menuFarbeAendern);
    menuNameAendern.add(menuItemPacMan);
    menuNameAendern.add(menuItemMyPacMan);
    menuFarbeAendern.add(menuItemGelb);
    menuFarbeAendern.add(menuItemPink);
    frame.setJMenuBar(menuBar);

    panel = new DrawPanel();
    frame.add(panel, BorderLayout.CENTER);
    frame.setSize(500, 500);
    frame.setVisible(true);

    while (true) {
   //Uninteressant
    }

  } 


  public static void main(String[] args) {
    Pacman pacman = new Pacman();
    pacman.initGui();
  }

  menuItemGelb.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      System.out.println("menuItemGelb Test");
    }
  });
}
[/Java]

Ich hoffe mir kann jemand sagen was an der Zuweissung des ActionListner bzw. dem Ort falsche ist.


----------



## Fab1 (28. Jan 2013)

```
menuItemGelb
```
 musst du entweder static machen oder innerhalb der initGui() Methode schreiben.

Des Weiteren wenn du es static machst, dann hast unten allerdings noch einen Klammer Fehler drin.


----------



## Daimond (28. Jan 2013)

Jetzt Klappt es. Danke dir.


----------

