# Menüleiste erstellen



## DaDonDerDritte (22. Oktober 2009)

Hallo,
ich brauche mal wieder Hilfe, und zwar will ich eine Menüleiste in einem Fenster erstellen.
Mein Code sieht nun wie folgt aus

```
package com.six.calendar.pr;

import java.awt.BorderLayout;
import java.awt.MenuBar;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;

@SuppressWarnings("serial")
public class MainCalendarFrame extends JFrame {
	public void setMenuBar(MenuBar mb)
	{
```
Bis jetzt wird mir aber keinerlei Menüleiste angezeigt. Nun wollte ich Menüpunkte hinzufügen, wie mache ich das?
Vielen Dank und Grüße


----------



## vfl_freak (22. Oktober 2009)

Moin,

hier mal der Code von einem kleinen Test-Client, den ich vor einiger Zeit geschrieben habe! Daran solltest Du Dich eigentlich gut lang hangeln  können.
Ist vlt. nicht perfekt, aber funktioniert  


```
public class AppMenue implements ActionListener
{
	JTextArea Textbereich = null;
	AppFenster AppWindow = null;

	/** Festlegen der MenüPunkte */
	public AppMenue( AppFenster Window, JTextArea text )
	{
		Textbereich = text;
		AppWindow   = Window;

		JMenuBar Menueleiste = new JMenuBar();
		
// #####   Menü 1 "Datei"   #####
		JMenu MenuePkt1 = new JMenu( "Datei" );

		JMenuItem Close = new JMenuItem( "Beenden" );
		MenuePkt1.add( Close );
		Close.addActionListener(this);

// #####   Menü 2 "Test-Daten einlesen"   #####
		JMenu MenuePkt2 = new JMenu( "Test-Daten einlesen" );

		JMenuItem DatenLesen = new JMenuItem( "Get It!" );
		MenuePkt2.add( DatenLesen );
		DatenLesen.addActionListener( this );
		// ...
		Menueleiste.add( MenuePkt1 );
		Menueleiste.add( MenuePkt2 );
	} /* AppMenue() */


	/** Abhandeln der MenüEvents */
	public void actionPerformed( ActionEvent evt )
	{
		// das auslösende Objekt ermitteln
		if( evt.getSource() instanceof JMenuItem ) 
		{ 
			// den auslösenden Menüpunkt ermitteln und anschließend entspr. reagieren
			String MenueEintrag = evt.getActionCommand();

// #####   Menü 1 "Datei"   #####
			/* ******************** */
			/*   Programm beenden   */
			/* ******************** */
			if( MenueEintrag.equals("Beenden") ) 
			{ 
				String msg = new String( "Möchten Sie das Programm beenden ?" );
				int retVal = JOptionPane.showConfirmDialog( AppWindow, msg, "Beenden", 
						JOptionPane.YES_NO_OPTION);
				if( retVal == JOptionPane.YES_OPTION ) 
				{	
					System.exit(0);
				}
			} /* if */
		// ...
		} /* if */
	} /* actionPerformed() */
} /* class AppMenue */
```

Gruß
Klaus


----------



## Johannes7146 (22. Oktober 2009)

Gib doch einfach mal bei google die begriffe jmenubar und example ein.

Der erste treffer bring eine Seite mit folgendem Beispiel:

So sieht das Ergebniss aus: klick


```
//Where the GUI is created:
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;

//Create the menu bar.
menuBar = new JMenuBar();

//Build the first menu.
menu = new JMenu("A Menu");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
        "The only menu in this program that has menu items");
menuBar.add(menu);

//a group of JMenuItems
menuItem = new JMenuItem("A text-only menu item",
                         KeyEvent.VK_T);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
        KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem.getAccessibleContext().setAccessibleDescription(
        "This doesn't really do anything");
menu.add(menuItem);

menuItem = new JMenuItem("Both text and icon",
                         new ImageIcon("http://www.tutorials.de/forum/images/middle.gif"));
menuItem.setMnemonic(KeyEvent.VK_B);
menu.add(menuItem);

menuItem = new JMenuItem(new ImageIcon("http://www.tutorials.de/forum/images/middle.gif"));
menuItem.setMnemonic(KeyEvent.VK_D);
menu.add(menuItem);

//a group of radio button menu items
menu.addSeparator();
ButtonGroup group = new ButtonGroup();
rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
rbMenuItem.setSelected(true);
rbMenuItem.setMnemonic(KeyEvent.VK_R);
group.add(rbMenuItem);
menu.add(rbMenuItem);

rbMenuItem = new JRadioButtonMenuItem("Another one");
rbMenuItem.setMnemonic(KeyEvent.VK_O);
group.add(rbMenuItem);
menu.add(rbMenuItem);

//a group of check box menu items
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
cbMenuItem.setMnemonic(KeyEvent.VK_C);
menu.add(cbMenuItem);

cbMenuItem = new JCheckBoxMenuItem("Another one");
cbMenuItem.setMnemonic(KeyEvent.VK_H);
menu.add(cbMenuItem);

//a submenu
menu.addSeparator();
submenu = new JMenu("A submenu");
submenu.setMnemonic(KeyEvent.VK_S);

menuItem = new JMenuItem("An item in the submenu");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
        KeyEvent.VK_2, ActionEvent.ALT_MASK));
submenu.add(menuItem);

menuItem = new JMenuItem("Another item");
submenu.add(menuItem);
menu.add(submenu);

//Build second menu in the menu bar.
menu = new JMenu("Another Menu");
menu.setMnemonic(KeyEvent.VK_N);
menu.getAccessibleContext().setAccessibleDescription(
        "This menu does nothing");
menuBar.add(menu);

...
frame.setJMenuBar(theJMenuBar);
```


----------



## DaDonDerDritte (22. Oktober 2009)

Danke für das Beispiel, doch er gibt mir bei der letzten zeile

```
Frame.setMenuBar(menuBar);
```
einen Fehler aus "The method setMenuBar (MenuBar) in the type Frame is not applicable for the arguments (JMenuBar)."


----------



## Johannes7146 (22. Oktober 2009)

```
frame.setJMenuBar(theJMenuBar);
```

nicht setMenuBar sondern setJMenuBar


----------



## DaDonDerDritte (22. Oktober 2009)

Dann unterstreicht er frame rot und gibt "frame cannot be resolved" aus?


----------



## Johannes7146 (22. Oktober 2009)

Poste mal dein kompletten Code.
Entweder fehlt der oben der import. Oder bei dir heißt das frame nicht frame sondern hat einen anderen namen, wenn du deine Klasse direkt von Jframe hast erben lassen solte es auch mit this funktionieren.


----------



## DaDonDerDritte (22. Oktober 2009)

```
package com.six.calendar.pr;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.MenuBar;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;

@SuppressWarnings("serial")
public class MainCalendarFrame extends JFrame {
	private static final String theJMenuBar = null;
		
	public MainCalendarFrame() {
		super("TeamCal Plus");
	}
	
	public void init() {
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//getContentPane().setLayout(new BorderLayout());
		JDesktopPane content = new JDesktopPane();
		setContentPane(content);
		//getContentPane().add(content, BorderLayout.CENTER);
		MitarbeiterPanel maPanel = new MitarbeiterPanel();
		maPanel.init();
		JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
		maFrame.getContentPane().setLayout(new BorderLayout());
		maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
		maFrame.setSize(200, 300);
		maFrame.setVisible(true);
		content.add(maFrame);
	}
	
	//Where the GUI is created:
	JMenuBar menuBar;
	JMenu menu, submenu;
	JMenuItem menuItem;
	JRadioButtonMenuItem rbMenuItem;
	JCheckBoxMenuItem cbMenuItem;
	{
	//Create the menu bar.
	menuBar = new JMenuBar();

	//Build the first menu.
	menu = new JMenu("A Menu");
	menu.setMnemonic(KeyEvent.VK_A);
	menu.getAccessibleContext().setAccessibleDescription(
	        "The only menu in this program that has menu items");
	menuBar.add(menu);

	//a group of JMenuItems
	menuItem = new JMenuItem("A text-only menu item",
	                         KeyEvent.VK_T);
	menuItem.setAccelerator(KeyStroke.getKeyStroke(
	        KeyEvent.VK_1, ActionEvent.ALT_MASK));
	menuItem.getAccessibleContext().setAccessibleDescription(
	        "This doesn't really do anything");
	menu.add(menuItem);

	menuItem = new JMenuItem("Both text and icon",
	                         new ImageIcon("images/middle.gif"));
	menuItem.setMnemonic(KeyEvent.VK_B);
	menu.add(menuItem);

	menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
	menuItem.setMnemonic(KeyEvent.VK_D);
	menu.add(menuItem);

	//a group of radio button menu items
	menu.addSeparator();
	ButtonGroup group = new ButtonGroup();
	rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
	rbMenuItem.setSelected(true);
	rbMenuItem.setMnemonic(KeyEvent.VK_R);
	group.add(rbMenuItem);
	menu.add(rbMenuItem);

	rbMenuItem = new JRadioButtonMenuItem("Another one");
	rbMenuItem.setMnemonic(KeyEvent.VK_O);
	group.add(rbMenuItem);
	menu.add(rbMenuItem);

	//a group of check box menu items
	menu.addSeparator();
	cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
	cbMenuItem.setMnemonic(KeyEvent.VK_C);
	menu.add(cbMenuItem);

	cbMenuItem = new JCheckBoxMenuItem("Another one");
	cbMenuItem.setMnemonic(KeyEvent.VK_H);
	menu.add(cbMenuItem);

	//a sub menu
	menu.addSeparator();
	submenu = new JMenu("A submenu");
	submenu.setMnemonic(KeyEvent.VK_S);

	menuItem = new JMenuItem("An item in the submenu");
	menuItem.setAccelerator(KeyStroke.getKeyStroke(
	        KeyEvent.VK_2, ActionEvent.ALT_MASK));
	submenu.add(menuItem);

	menuItem = new JMenuItem("Another item");
	submenu.add(menuItem);
	menu.add(submenu);

	//Build second menu in the menu bar.
	menu = new JMenu("Another Menu");
	menu.setMnemonic(KeyEvent.VK_N);
	menu.getAccessibleContext().setAccessibleDescription(
	        "This menu does nothing");
	menuBar.add(menu);

	frame.setJMenuBar(theJMenuBar);
	
	}
}
```
Das ist der gesamte Code.
Grüße


----------



## Johannes7146 (22. Oktober 2009)

änder die letze Zeile mal bitte so:


```
this.setJMenuBar(menuBar);
```

wenn du längeren Java-Quellcode postest kannst du anstatt den CODE tags auch die JAVA tags verwenden.


----------



## Johannes7146 (22. Oktober 2009)

Hab das Beispiel mal in eine TestKlasse eingebunden.

Dashier läuft bei mir:


```
package de.tutorials.johannes7146;

import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;

public class MenuExample extends JFrame {

    private static final long serialVersionUID = 6698241598541408794L;

    public static void main(String[] args) {
        MenuExample me = new MenuExample();
        me.init();
    }

    public void init() {
        this.setSize(500, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addMenu();
        this.setVisible(true);
    }

    public void addMenu() {
        //Where the GUI is created:
        JMenuBar menuBar;
        JMenu menu, submenu;
        JMenuItem menuItem;
        JRadioButtonMenuItem rbMenuItem;
        JCheckBoxMenuItem cbMenuItem;
        {
            //Create the menu bar.
            menuBar = new JMenuBar();

            //Build the first menu.
            menu = new JMenu("A Menu");
            menu.setMnemonic(KeyEvent.VK_A);
            menu
                    .getAccessibleContext()
                    .setAccessibleDescription("The only menu in this program that has menu items");
            menuBar.add(menu);

            //a group of JMenuItems
            menuItem = new JMenuItem("A text-only menu item", KeyEvent.VK_T);
            menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1,
                                                           ActionEvent.ALT_MASK));
            menuItem.getAccessibleContext()
                    .setAccessibleDescription("This doesn't really do anything");
            menu.add(menuItem);

            menuItem = new JMenuItem("Both text and icon",
                                     new ImageIcon("images/middle.gif"));
            menuItem.setMnemonic(KeyEvent.VK_B);
            menu.add(menuItem);

            menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
            menuItem.setMnemonic(KeyEvent.VK_D);
            menu.add(menuItem);

            //a group of radio button menu items
            menu.addSeparator();
            ButtonGroup group = new ButtonGroup();
            rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
            rbMenuItem.setSelected(true);
            rbMenuItem.setMnemonic(KeyEvent.VK_R);
            group.add(rbMenuItem);
            menu.add(rbMenuItem);

            rbMenuItem = new JRadioButtonMenuItem("Another one");
            rbMenuItem.setMnemonic(KeyEvent.VK_O);
            group.add(rbMenuItem);
            menu.add(rbMenuItem);

            //a group of check box menu items
            menu.addSeparator();
            cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
            cbMenuItem.setMnemonic(KeyEvent.VK_C);
            menu.add(cbMenuItem);

            cbMenuItem = new JCheckBoxMenuItem("Another one");
            cbMenuItem.setMnemonic(KeyEvent.VK_H);
            menu.add(cbMenuItem);

            //a sub menu
            menu.addSeparator();
            submenu = new JMenu("A submenu");
            submenu.setMnemonic(KeyEvent.VK_S);

            menuItem = new JMenuItem("An item in the submenu");
            menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2,
                                                           ActionEvent.ALT_MASK));
            submenu.add(menuItem);

            menuItem = new JMenuItem("Another item");
            submenu.add(menuItem);
            menu.add(submenu);

            //Build second menu in the menu bar.
            menu = new JMenu("Another Menu");
            menu.setMnemonic(KeyEvent.VK_N);
            menu.getAccessibleContext()
                    .setAccessibleDescription("This menu does nothing");
            menuBar.add(menu);

            this.setJMenuBar(menuBar);
        }

    }
}
```


----------



## DaDonDerDritte (22. Oktober 2009)

Vielen Dank, nun hat es funktioniert
Grüße


----------



## DaDonDerDritte (22. Oktober 2009)

Wie ichs chon befürchtet habe, bahnt sich jetzt die nächste Frage an. Die Menüeinträge sollen natürlich auch eine Funktion bekommen. Gibt es da ein gute tutorial zu, ist dies schwer?
Die Maske, welche geöffnet werden soll, nachdem man im Menü den entsprechenden Punkt auswählt, habe ich bereits. Und diese soll nun im Hauptfenster geöffnet werden.


----------



## vfl_freak (22. Oktober 2009)

DaDonDerDritte hat gesagt.:


> Wie ichs chon befürchtet habe, bahnt sich jetzt die nächste Frage an. Die Menüeinträge sollen natürlich auch eine Funktion bekommen. Gibt es da ein gute tutorial zu, ist dies schwer?


nein, geht grundsätzlich so, wie ich es in meinem ersten Post schrieb (ab Zeile 33) !



DaDonDerDritte hat gesagt.:


> Die Maske, welche geöffnet werden soll, nachdem man im Menü den entsprechenden Punkt auswählt, habe ich bereits. Und diese soll nun im Hauptfenster geöffnet werden.


Dann musst halt das, was Du da öffnest ("Maske") in den entsprechenden Anzeigebereich Deines Hauptfensters einfügen !

Gruß
Klaus


----------



## DaDonDerDritte (28. Oktober 2009)

Kann mir das bitte nochmal jemand genauer erklären? Mit diesem Code

```
/** Abhandeln der MenüEvents */
    public void actionPerformed( ActionEvent evt )
    {
        // das auslösende Objekt ermitteln
        if( evt.getSource() instanceof JMenuItem )
        {
            // den auslösenden Menüpunkt ermitteln und anschließend entspr. reagieren
            String MenueEintrag = evt.getActionCommand();
```
sollte der Menüeintrag also eine Funktion bekommen? Wie gebe ich das auslösende Objekt und wie den auslösenden Menüeintrag an? Gerne auch an nem Beispiel Wie mein Code für die Menüleiste aussieht, seht ihr ja weiter oben.
Vielen Dank schonmal.
Grüße


----------



## Tim Bureck (28. Oktober 2009)

JMenuItem erbt von AbstractButton die Methode addActionListener. Einfach ein Objekt deines ActionListeners so hinzufügen (hier im Beispiel mit einem anonymen Typ).


```
menuItem.addActionListener(new ActionListener {
    public void actionPerformed(ActionEvent ae) {
        // tu etwas
    }
});
```


----------



## DaDonDerDritte (28. Oktober 2009)

Ich versteh das gerade nicht Wärst du so nett und zeigst mir das an zeile 52 im folgenden Code. Das würde mir sehr helfen, wenn ichs mal seh wies aussehen soll.

```
package de.tutorials.johannes7146;
 
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
 
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;
 
public class MenuExample extends JFrame {
 
    private static final long serialVersionUID = 6698241598541408794L;
 
    public static void main(String[] args) {
        MenuExample me = new MenuExample();
        me.init();
    }
 
    public void init() {
        this.setSize(500, 500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addMenu();
        this.setVisible(true);
    }
 
    public void addMenu() {
        //Where the GUI is created:
        JMenuBar menuBar;
        JMenu menu, submenu;
        JMenuItem menuItem;
        JRadioButtonMenuItem rbMenuItem;
        JCheckBoxMenuItem cbMenuItem;
        {
            //Create the menu bar.
            menuBar = new JMenuBar();
 
            //Build the first menu.
            menu = new JMenu("A Menu");
            menu.setMnemonic(KeyEvent.VK_A);
            menu
                    .getAccessibleContext()
                    .setAccessibleDescription("The only menu in this program that has menu items");
            menuBar.add(menu);
 
            //a group of JMenuItems
            menuItem = new JMenuItem("A text-only menu item", KeyEvent.VK_T);
            menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1,
                                                           ActionEvent.ALT_MASK));
            menuItem.getAccessibleContext()
                    .setAccessibleDescription("This doesn't really do anything");
            menu.add(menuItem);
 
            menuItem = new JMenuItem("Both text and icon",
                                     new ImageIcon("images/middle.gif"));
            menuItem.setMnemonic(KeyEvent.VK_B);
            menu.add(menuItem);
 
            menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
            menuItem.setMnemonic(KeyEvent.VK_D);
            menu.add(menuItem);
 
            //a group of radio button menu items
            menu.addSeparator();
            ButtonGroup group = new ButtonGroup();
            rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
            rbMenuItem.setSelected(true);
            rbMenuItem.setMnemonic(KeyEvent.VK_R);
            group.add(rbMenuItem);
            menu.add(rbMenuItem);
 
            rbMenuItem = new JRadioButtonMenuItem("Another one");
            rbMenuItem.setMnemonic(KeyEvent.VK_O);
            group.add(rbMenuItem);
            menu.add(rbMenuItem);
 
            //a group of check box menu items
            menu.addSeparator();
            cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
            cbMenuItem.setMnemonic(KeyEvent.VK_C);
            menu.add(cbMenuItem);
 
            cbMenuItem = new JCheckBoxMenuItem("Another one");
            cbMenuItem.setMnemonic(KeyEvent.VK_H);
            menu.add(cbMenuItem);
 
            //a sub menu
            menu.addSeparator();
            submenu = new JMenu("A submenu");
            submenu.setMnemonic(KeyEvent.VK_S);
 
            menuItem = new JMenuItem("An item in the submenu");
            menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2,
                                                           ActionEvent.ALT_MASK));
            submenu.add(menuItem);
 
            menuItem = new JMenuItem("Another item");
            submenu.add(menuItem);
            menu.add(submenu);
 
            //Build second menu in the menu bar.
            menu = new JMenu("Another Menu");
            menu.setMnemonic(KeyEvent.VK_N);
            menu.getAccessibleContext()
                    .setAccessibleDescription("This menu does nothing");
            menuBar.add(menu);
 
            this.setJMenuBar(menuBar);
        }
 
    }
}
```


----------



## vfl_freak (28. Oktober 2009)

Moin,

nö, so klappt das nicht 

Du setzt in den Zeilen ab 52 Deine neue Menüpunkte immer wieder auf die gleiche Variable "menuItem" 
Du musst hier für jeden einzelnen Menüpunkt eine eigene Variable deklarieren, damit Du anschließend auch drauf zugreifen kannst (vgl. mein erster Post ).
Dann kannst Du jeder einzelnen Variable einen ActionListener zuweisen und drauf reagieren !

Gruß
Klaus


----------



## DaDonDerDritte (28. Oktober 2009)

Okay machen wir das ganze mal Schritt für Schritt
Folgendes ist mein aktueller Code. Nun habe ich bei jedem Menüeintrag immer die gleiche Variable "menuItem", so ist es doch richtig? Wo hast du nun für jeden Menüpunkt eine eigene Varibale deklariert? Meinst du MenuPkt1, MenuPkt2 usw.? Und wenn ich das getan habe, dann muss ich mit Code ab Zeile 33 weitermachen? Aber dazu kommen wir später nochmal...

```
package com.six.calendar.pr;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;


@SuppressWarnings("serial")
public class MainCalendarFrame extends JFrame {
	public MainCalendarFrame() {
		super("TeamCal Plus");
	}
	
	public void init() {
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//getContentPane().setLayout(new BorderLayout());
		JDesktopPane content = new JDesktopPane();
		setContentPane(content);
		//getContentPane().add(content, BorderLayout.CENTER);
		MitarbeiterPanel maPanel = new MitarbeiterPanel();
		maPanel.init();
		JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
		maFrame.getContentPane().setLayout(new BorderLayout());
		maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
		maFrame.setSize(200, 300);
		maFrame.setVisible(true);
		content.add(maFrame);
	}
	
	JMenuBar menuBar;
	JMenu menu, submenu;
	JMenuItem menuItem;
	JRadioButtonMenuItem rbMenuItem;
	JCheckBoxMenuItem cbMenuItem;
	{
		
	menuBar = new JMenuBar();

menu = new JMenu("TeamCal Plus");
	
	menu.getAccessibleContext().setAccessibleDescription(
	        "");
	menuBar.add(menu);
	
	menuItem = new JMenuItem("Anmelden",
            new ImageIcon("images/login.png"));
menu.add(menuItem);
	
	menu = new JMenu("Bearbeiten");
	
	menu.getAccessibleContext().setAccessibleDescription(
	        "The only menu in this program that has menu items");
	menuBar.add(menu);

	
	menuItem = new JMenuItem("Mitarbeiter hinzufügen",
	                         new ImageIcon("images/ico_add.png"));
	menu.add(menuItem);
	menu.addSeparator();

	menuItem = new JMenuItem("Mitarbeiter bearbeiten",
            new ImageIcon("images/tools.jpg"));
	menu.add(menuItem);
	menu.addSeparator();
	menuItem = new JMenuItem("Mitarbeiter löschen",
            new ImageIcon("images/delete.jpg"));
	menu.add(menuItem);

	this.setJMenuBar(menuBar);
	
	menu = new JMenu("Ansicht");
	menu.getAccessibleContext().setAccessibleDescription(
	        "");
	menuBar.add(menu);
	menuItem = new JMenuItem("Kalender",
            new ImageIcon("images/kalender.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Jahreskalender",
        new ImageIcon("images/jahreskalender.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Statistik",
        new ImageIcon("images/statistik.png"));
menu.add(menuItem);

menu = new JMenu("Optionen");
menu.getAccessibleContext().setAccessibleDescription(
        "");
menuBar.add(menu);

menuItem = new JMenuItem("Nutzer",
        new ImageIcon("images/nutzer.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Gruppen",
        new ImageIcon("images/gruppen.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Gruppenzuordnung",
        new ImageIcon("images/gruppenzuordnung.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Abwesenheitstypen",
        new ImageIcon("images/abwesenheitstypen.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Feiertage",
        new ImageIcon("images/feiertage.png"));
menu.add(menuItem);
menu.addSeparator();
menuItem = new JMenuItem("Datenbank Verwaltung",
        new ImageIcon("images/datenbankverwaltung.png"));
menu.add(menuItem);

menu = new JMenu("Version");

menu.getAccessibleContext().setAccessibleDescription(
        "");
menuBar.add(menu);
	}

}
	}
```


----------



## vfl_freak (28. Oktober 2009)

Moin,



DaDonDerDritte hat gesagt.:


> Nun habe ich bei jedem Menüeintrag immer die gleiche Variable "menuItem", so ist es doch richtig?


Nein, wie ich eben schon schrieb: genau das NICHT !
Damit überschreibst doch jedesmal die VAR!




DaDonDerDritte hat gesagt.:


> Wo hast du nun für jeden Menüpunkt eine eigene Varibale deklariert? Meinst du MenuPkt1, MenuPkt2 usw.?


Nicht ganz ... MenuPktx sind die einzelnen Menüs in der Menüleiste (bspw.  "Datei"). Im Menü "Datei" gibt es dann die einzelnen, aufrufbaren Menüpunkte.
Hier nochmals (etwas erweitert) zur Verdeutlichung:

```
public class AppMenue implements ActionListener
{
    JTextArea Textbereich = null;
    AppFenster AppWindow = null;
 
    /** Festlegen der MenüPunkte */
    public AppMenue( AppFenster Window, JTextArea text )
    {
        Textbereich = text;
        AppWindow   = Window;
 
        JMenuBar Menueleiste = new JMenuBar();
       
// #####   Menü 1 "Datei"   #####
        JMenu MenuePkt1 = new JMenu( "Datei" );
 
    // 'Open' ist ein Menüpkt.
        JMenuItem Open = new JMenuItem( "Öffnen" );
        MenuePkt1.add( Open ); 
        Open.addActionListener(this);

    // 'Close' ist ein weiterer Menüpkt.
        JMenuItem Close = new JMenuItem( "Beenden" );
        MenuePkt1.add( Close );
        Close.addActionListener(this);

// and so on .....
```

Jetzt klarer 
Gruß
Klaus


----------



## DaDonDerDritte (28. Oktober 2009)

Dann sind bei dir jetzt Open und Close die variablen? Wenn nicht dann dreh ich noch durch


----------



## vfl_freak (28. Oktober 2009)

DaDonDerDritte hat gesagt.:


> Dann sind bei dir jetzt Open und Close die variablen? Wenn nicht dann dreh ich noch durch



Moin,

ja, na sicher, was denn sonst 
Variablen vom Typ "JMenuItem" ...

Genauso deklarierst Du doch auch Deine eine Variable "menuItem" 

Und mit "Open" und "Close" kann Du jetzt alles Mögliche anstellen ... bspw. eben den ActionListerner dranhängen !!

Gruß
Klaus


----------



## DaDonDerDritte (28. Oktober 2009)

```
menu edit = new JMenu("Bearbeiten");
```
 Wenn ich dies so mache, dann unterstreicht er immer menu und gibt "menu cannot be resolved to a type" aus. Ich muss am Anfang des Codes noch ne Zeile einfügen oder? Bzw. wenn ich wie du JMenu edit... mache, dann unterstreicht er edit gelb.


----------



## vfl_freak (28. Oktober 2009)

DaDonDerDritte hat gesagt.:


> *java Code: *
> 
> 
> menu edit = new JMenu("Bearbeiten");
> ...



Das ist doch auch klar 
Der Typ 'menu' ist nicht gleich 'JMenu' 

Richtig ist es so:

```
jMenu edit = new JMenu("Bearbeiten");

// oder, falls Du einen eigene Klasse 'menu' hast
menu edit = new menu("Bearbeiten");
```

Ich möchte Dir ja nicht zu nahe treten, aber vlt. solltest Du Dich erstmal mit den Grundlagen der Java-Programmierung vertraut machen 

So finde ich diese Seite sehr anschaulich, wenngleich auch schon etwas älter ...
http://www.dpunkt.de/java/index.html

Gruß
Klaus


----------



## DaDonDerDritte (28. Oktober 2009)

Das hab ich jetzt im Prinzip schon verstanden, problem jetzt ist nur, sobald ich die variable hinzufüge, und dann noch den action listener, dann verschieben sich meine Menüeinträge immer. Dann verschwindet plötzlich der ganz linke Menüpunkt, und dem seine menuItems werden zum nächsten Menüpunkt hinzugefügt
edit: Habe mal weiter rumprobiert
Folgenden Code habe ich jetzt

```
JMenu MenuePkt2 = new JMenu("Bearbeiten");
	
	menu.getAccessibleContext().setAccessibleDescription(
	        "The only menu in this program that has menu items");
	menuBar.add(menu);

	
JMenuItem adde = new JMenuItem("Mitarbeiter hinzufügen",
	                         new ImageIcon("images/ico_add.png"));
MenuePkt2.add( adde );
adde.addActionListener(this);
```
Er gibt keinerlei Fehler mehr aus, doch er startet nicht mehr?

Exception in thread "main" java.lang.NullPointerException
	at com.six.calendar.pr.MainCalendarFrame.<init>(MainCalendarFrame.java:52)
	at com.six.calendar.UCal.main(UCal.java:11)


----------



## vfl_freak (28. Oktober 2009)

Dann machst Du was falsch ... 
Lässt sich aber ohne Code nicht analysieren  ;-]

Hier nochmal mein (leicht überarbeitetes) Eingangsbeispiel:

*java Code: * 




































































                        public class AppMenue implements ActionListener

{

JTextArea Textbereich = null;

    AppFenster AppWindow = null;



    /** Festlegen der MenüPunkte */

    public AppMenue( AppFenster Window, JTextArea text )

    {

        Textbereich = text;

        AppWindow   = Window;



JMenuBar Menueleiste = new JMenuBar();



// ###   erstes Menü "Datei" erzeugen   ###

JMenu Menue1 = new JMenu( "Datei" );



    // ---   Menüpunkt "Öffnen" erzeugen

JMenuItem Open = new JMenuItem( "Öffnen" );

        Menue1.add( Open );

        Open.addActionListener(this);



    // ---   Menüpunkt "Beenden" erzeugen

JMenuItem Close = new JMenuItem( "Beenden" );

        Menue1.add( Close );

        Close.addActionListener(this);



// ###   zweites Menü "Test-Daten einlesen" erzeugen   ###

JMenu Menue2 = new JMenu( "Test-Daten einlesen" );



JMenuItem DatenLesen = new JMenuItem( "Get It!" );

        Menue2.add( DatenLesen );

        DatenLesen.addActionListener( this );



        // ...



        Menueleiste.add( Menue1 );

        Menueleiste.add( Menue2 );

    } /* AppMenue() */





    /** Abhandeln der MenüEvents */

    public void actionPerformed( ActionEvent evt )

    {

        // das auslösende Objekt ermitteln

        if( evt.getSource() instanceof JMenuItem )

        {

            // den auslösenden Menüpunkt ermitteln und anschließend entspr. reagieren

String MenueEintrag = evt.getActionCommand();



// #####   Menü-1 "Datei"   #####

            /* ******************** */

            /*   Programm beenden   */

            /* ******************** */

            if( MenueEintrag.equals("Beenden") ) // vgl. oben "JMenuItem Close = new JMenuItem( "Beenden" );"

            {

String msg = new String( "Möchten Sie das Programm beenden ?" );

                int retVal = JOptionPane.showConfirmDialog( AppWindow, msg, "Beenden",

JOptionPane.YES_NO_OPTION);

                if( retVal == JOptionPane.YES_OPTION )

                {   

System.exit(0);

                }

            } /* if */

        // ...

        } /* if */

    } /* actionPerformed() */

} /* class AppMenue */




Du hast immer zu _*einem*_ JMenu _*n*_ JMenuItems
Diese musst Du dann im "actionPerformed" auch einzeln abhandeln !

Gruß
Klaus

[EDIT:]  Sorry, hier haben sich wohl die Code-Tags bei9m Einfügen verflüchtigt .... :-(


----------



## Tim Bureck (28. Oktober 2009)

Momentchen mal.. irgendwie treten wir hier so mehr oder weniger auf der Stelle herum. Mach am besten mal so in etwa folgendes:


```
Klasse {

    JMenuBar menuBar;
    JMenu menu1;
    JMenuItem menu1item1;
    JMenuItem menu1item2;
    JMenu menu2;
    JMenuItem menu2item1;

    konstruktor {
        menuBar = new JMenuBar();
        menu1 = new JMenu();
        menu1item1 = new JMenuItem("Item 1");
        menu1item1.addActionListener(new ActionListener {
            public void actionPerformed(ActionEvent ae) {
                // tu was
            }
         });

         // ... was ähnliches für Item 2

         menu1.add(menu1item1);
         menuBar.add(menu1);

         // ... und das ganze für Menu 2 usw.
    }
}
```

Wenn du jedes Item genau einem Menu zuordnest, kann sich da eigentlich nichts verschieben. Probier's mal nach dem Schema aus und informiere uns ob's funktioniert - und wenn nicht, Code mitposten!


----------



## DaDonDerDritte (29. Oktober 2009)

@Tim Bureck
Thx, werde ich später nochmal ausporbieren, wenn mein jetziger Versuch nicht mehr klappt
Ich habe nun jedem Menüpunkt eine Variable zugewiesen und jedem MenuItem. Anschließend habe ich jedem Menü die passenden MenuItems zugewiesen. Folgendermaßen sieht mein Code nun aus

```
ackage com.six.calendar.pr;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;


@SuppressWarnings("serial")
public class MainCalendarFrame extends JFrame  {
	public MainCalendarFrame() {
		super("TeamCal Plus");
	}
	
	public void init() {
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//getContentPane().setLayout(new BorderLayout());
		JDesktopPane content = new JDesktopPane();
		setContentPane(content);
		//getContentPane().add(content, BorderLayout.CENTER);
		MitarbeiterPanel maPanel = new MitarbeiterPanel();
		maPanel.init();
		JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
		maFrame.getContentPane().setLayout(new BorderLayout());
		maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
		maFrame.setSize(200, 300);
		maFrame.setVisible(true);
		content.add(maFrame);
	}
	
	JMenuBar menuBar;
	JMenu menu, submenu;
	JMenuItem menuItem;
	JRadioButtonMenuItem rbMenuItem;
	JCheckBoxMenuItem cbMenuItem;
	
	{
		
	menuBar = new JMenuBar();

JMenu MenuePkt1 = new JMenu("TeamCal Plus");
	
	menu.getAccessibleContext().setAccessibleDescription(
	        "");
	menuBar.add(menu);
	
	JMenuItem login = new JMenuItem("Anmelden",
            new ImageIcon("images/login.png"));
	MenuePkt1.add( login );
	
menu.add(menuItem);
	
	JMenu MenuePkt2 = new JMenu("Bearbeiten");
	
	menu.getAccessibleContext().setAccessibleDescription(
	        "The only menu in this program that has menu items");
	menuBar.add(menu);

	
	JMenuItem adde = new JMenuItem("Mitarbeiter hinzufügen",
	                         new ImageIcon("images/ico_add.png"));
	MenuePkt2.add( adde );
	

	menu.add(menuItem);
	menu.addSeparator();

JMenuItem edit = new JMenuItem("Mitarbeiter bearbeiten",
            new ImageIcon("images/tools.jpg"));
MenuePkt2.add( edit );

	menu.add(menuItem);
	menu.addSeparator();
	JMenuItem delete = new JMenuItem("Mitarbeiter löschen",
            new ImageIcon("images/delete.jpg"));
	MenuePkt2.add( delete );
	
	menu.add(menuItem);

	this.setJMenuBar(menuBar);
	
	JMenu MenuePkt3 = new JMenu("Ansicht");
	menu.getAccessibleContext().setAccessibleDescription(
	        "");
	menuBar.add(menu);
	JMenuItem cal = new JMenuItem("Kalender",
            new ImageIcon("images/kalender.png"));
	MenuePkt3.add( cal );
	
menu.add(menuItem);
menu.addSeparator();
JMenuItem yearcal = new JMenuItem("Jahreskalender",
        new ImageIcon("images/jahreskalender.png"));
MenuePkt3.add( yearcal );

menu.add(menuItem);
menu.addSeparator();
JMenuItem stat = new JMenuItem("Statistik",
        new ImageIcon("images/statistik.png"));
MenuePkt3.add( stat );

menu.add(menuItem);

JMenu MenuePkt4 = new JMenu("Optionen");
menu.getAccessibleContext().setAccessibleDescription(
        "");
menuBar.add(menu);

JMenuItem user = new JMenuItem("Nutzer",
        new ImageIcon("images/nutzer.png"));
MenuePkt4.add( user );

menu.add(menuItem);
menu.addSeparator();
JMenuItem groups = new JMenuItem("Gruppen",
        new ImageIcon("images/gruppen.png"));
MenuePkt4.add( groups );

menu.add(menuItem);
menu.addSeparator();
JMenuItem groupmapping  = new JMenuItem("Gruppenzuordnung",
        new ImageIcon("images/gruppenzuordnung.png"));
MenuePkt4.add( groupmapping );

menu.add(menuItem);
menu.addSeparator();
JMenuItem types = new JMenuItem("Abwesenheitstypen",
        new ImageIcon("images/abwesenheitstypen.png"));
MenuePkt4.add( types );

menu.add(menuItem);
menu.addSeparator();
JMenuItem holidays = new JMenuItem("Feiertage",
        new ImageIcon("images/feiertage.png"));
MenuePkt4.add( holidays );

menu.add(menuItem);
menu.addSeparator();
JMenuItem database = new JMenuItem("Datenbank Verwaltung",
        new ImageIcon("images/datenbankverwaltung.png"));
MenuePkt4.add( database );

menu.add(menuItem);

JMenu MenuePkt5 = new JMenu("TeamCal Plus");

menu.getAccessibleContext().setAccessibleDescription(
        "");
menuBar.add(menu);

JMenuItem about = new JMenuItem("Über",
        new ImageIcon("images/datenbankverwaltung.png"));
MenuePkt5.add(about);
menu.add(menuItem);

menu.add(menuItem);
	}
```
Fehler gibt er keinerlei aus, doch er startet nicht mehr, wie gestern bereits


----------



## vfl_freak (29. Oktober 2009)

Moin,

nein, Du hast es noch immer nicht richtig verstanden ! 

Ich werde nochmals versuchen es anhand Deiner Zeilen 49-59 zu verdeutlichen:


```
// hier erzeugst Du das Objekt der Menüleiste - soweit ok!
menuBar = new JMenuBar();

// nun erzeugst Du einen neuen Menüpunkt für die Leiste - soweit ok!
JMenu MenuePkt1 = new JMenu("TeamCal Plus");

// So - nun fügst aber nicht diesen neuen Menüpunkt hinzu, 
// sondern ein anderes zuvor deklariertes Menü ! ! !
// menuBar.add(menu); // ?
// Richtig wäre hier:
menuBar.add(MenuePkt1);

// nun erzeugst Du einen neuen Eintrag für das Menü1 - soweit ok!
JMenuItem login = new JMenuItem( "Anmelden",new ImageIcon("http://www.tutorials.de/forum/images/login.png") );

// hier wird der neue Eintrag korrekt dem Menü1 hinzugefügt!
MenuePkt1.add( login );
   
// dies ist wieder Blödsinn, da es 'menu' gar nicht gibt!
menu.add(menuItem);
```

Zudem sind Diene Deklarationen in den Zeilen 40/41 völlig überflüssig, da Du ja die richtigen VAR ab Zeile 49 erzeugst!

Schau Dir nochmals die von mir und Tim Bureck geposteten Beispiel genau an und schau, welche Objekte erzeugt werden und was genau damit veranstaltet wird 

Und nimm' meinen zuvor geposteten Tipp ernst und beschäftige Dich mit den Grundlagen (Du musst wirklich drauf achten, welche Objekte Du brauchst und was Du wo hinzufügen willst!) :
http://www.dpunkt.de/java/index.html

Ich habe meine erstes Java-Menü auch erst vor ca. 9 Monaten gebastelt und mich damit beschäftigen müssen ;-]

Gruß
Klaus


----------



## DaDonDerDritte (29. Oktober 2009)

> // dies ist wieder Blödsinn, da es 'menu' gar nicht gibt!
> menu.add(menuItem);


Stimmt, weil wir nur MenuePkt1 usw. haben? Sollte ich das menu also durch MenuPkt1, MenuPkt2 usw. ersetzen? Dann wäre es ja aber doppelt, weil die zeile darüber die gleiche ist.
Ich werde mir das noch durchlesen, vielen Dank für den Tipp


----------



## vfl_freak (29. Oktober 2009)

DaDonDerDritte hat gesagt.:


> Stimmt, weil wir nur MenuePkt1 usw. haben?
> 
> Sollte ich das menu also durch MenuPkt1, MenuPkt2 usw. ersetzen? Dann wäre es ja aber doppelt, weil die zeile darüber die gleiche ist.



naja, auch noch nicht so ganz 

Hier nochmals ein recht abstraktes Beispiel für ein Menü mit 3 Menüpunkte, die dann 3, 2 und 1 Menüeintrag haben:


```
// Erzeugen einer Menüleiste
JMenuBar menuBar = new JMenuBar();
 
// Erzeugen von 3 Menüpunkten für die Menüleiste
JMenu MenuePkt1 = new JMenu("Menü-1");
JMenu MenuePkt2 = new JMenu("Menü-2");
JMenu MenuePkt3 = new JMenu("Menü-3");
 
// Erzeugen einzelner Menüpunkte
JMenuItem item1_Menu1 = new JMenuItem( "Item-1 M1" );
JMenuItem item2_Menu1 = new JMenuItem( "Item-2 M1" );
JMenuItem item3_Menu1 = new JMenuItem( "Item-3 M1" );

JMenuItem item1_Menu2 = new JMenuItem( "Item-1 M2" );
JMenuItem item2_Menu2 = new JMenuItem( "Item-2 M2" );

JMenuItem item1_Menu3 = new JMenuItem( "Item-1 M3" );
 
// die neuen Einträge den jeweiligen Menüs hinzufügen!
MenuePkt1.add( item1_Menu1 );
MenuePkt1.add( item2_Menu1 );
MenuePkt1.add( item3_Menu1 );

MenuePkt2.add( item1_Menu2 );
MenuePkt2.add( item2_Menu2 );

MenuePkt3.add( item1_Menu3 );
   
// Hinzufügen der 3 Menüpunkte zur Menüleiste
menuBar.add( MenuePkt1 );
menuBar.add( MenuePkt2 );
menuBar.add( MenuePkt3 );

// TODO das Hinzufügen der Menüleiste zu Deinem Projekt ...
MEIN_OBJEKT.add( menuBar );
```

Mehr musst Du wirklich nicht machen !!
Keine weiteren Deklarationen etc. 

Gruß
Klaus


----------



## DaDonDerDritte (29. Oktober 2009)

Hallo,
vielen Dank nochmal für deine Hilfe, wie ich dir langsam aufn Sack gehen muss
Habs nun so gemacht wie in deinem letzten Post.
Sieht nun so aus

```
package com.six.calendar.pr;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;



public class MainCalendarFrame extends JFrame  {
	public MainCalendarFrame() {
		super("TeamCal Plus");
	}
	
	public void init() {
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//getContentPane().setLayout(new BorderLayout());
		JDesktopPane content = new JDesktopPane();
		setContentPane(content);
		//getContentPane().add(content, BorderLayout.CENTER);
		MitarbeiterPanel maPanel = new MitarbeiterPanel();
		maPanel.init();
		JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
		maFrame.getContentPane().setLayout(new BorderLayout());
		maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
		maFrame.setSize(200, 300);
		maFrame.setVisible(true);
		content.add(maFrame);
	}
	
	// Erzeugen einer Menüleiste
	JMenuBar menuBar = new JMenuBar();
	 
	// Erzeugen von 3 Menüpunkten für die Menüleiste
	JMenu MenuePkt1 = new JMenu("Menü-1");
	JMenu MenuePkt2 = new JMenu("Menü-2");
	JMenu MenuePkt3 = new JMenu("Menü-3");
	 
	// Erzeugen einzelner Menüpunkte
	JMenuItem item1_Menu1 = new JMenuItem( "Item-1 M1" );
	JMenuItem item2_Menu1 = new JMenuItem( "Item-2 M1" );
	JMenuItem item3_Menu1 = new JMenuItem( "Item-3 M1" );
	 
	JMenuItem item1_Menu2 = new JMenuItem( "Item-1 M2" );
	JMenuItem item2_Menu2 = new JMenuItem( "Item-2 M2" );
	 
	JMenuItem item1_Menu3 = new JMenuItem( "Item-1 M3" );
	 
	// die neuen Einträge den jeweiligen Menüs hinzufügen!
	MenuePkt1.add( item1_Menu1 );
	MenuePkt1.add( item2_Menu1 );
	MenuePkt1.add( item3_Menu1 );
	 
	MenuePkt2.add( item1_Menu2 );
	MenuePkt2.add( item2_Menu2 );
	 
	MenuePkt3.add( item1_Menu3 );
	   
	// Hinzufügen der 3 Menüpunkte zur Menüleiste
	menuBar.add( MenuePkt1 );
	menuBar.add( MenuePkt2 );
	menuBar.add( MenuePkt3 );
	 
	// TODO das Hinzufügen der Menüleiste zu Deinem Projekt ...
	MEIN_OBJEKT.add( menuBar );

	
	

	
	
}
```
Nun unterstreicht er mir sämtliche Zeilen rot und gibt mir die meldung "VariableDeclaratorID expected after this token" Weiterhin unterstreicht er mir seit gestern immer in zeile 18 MainCalendarFrame extends gelb und gibt "The serializable class MainCalendarFrame does not declare a static final serialVersionUID field of type long" aus. Deswegen startet es wohl auch gar nicht mehr.


----------



## vfl_freak (29. Oktober 2009)

zum ersten Problem - vlt. ist dies eine Lösung für Dich:
http://www.java-forum.org/allgemein...oken-variabledeclaratorid-expected-after.html

zum zweiten Problem:
in der Zeile, wo das angemeckert wird erste Zeile der Klasse), sollte es ganz links in der ersten Leiste ein kleines Dreieck mit einem "!" geben ! !
Klick' es mit der rechten Maustaste an und wähle "Schnellkorrektur" (oder alternativ: Cursor auf die Zeile setzen und <Strg>+<1> drücken) !
Dort bekommst Du dann mögliche Korrekturvorschläge (geht auch wunderbar bei Fehlern) !
Im konkreten Fall dann die "Standard-VersionsID" hinzufügen!
Hier ein Hinweis, was das soll:
http://www.developers-guide.net/forums/3164,serialversionuid-bringt-es
Gruß
Klaus


----------



## Tim Bureck (29. Oktober 2009)

Das erste Problem ist viel banaler: Das ganze Zeug muss natürlich in eine Methode, einfach in die Klasse schreiben geht nicht. 


```
package com.six.calendar.pr;
 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
 
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
 
 
 
public class MainCalendarFrame extends JFrame  {
    public MainCalendarFrame() {
        super("TeamCal Plus");
    }
   
    public void init() {
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        //getContentPane().setLayout(new BorderLayout());
        JDesktopPane content = new JDesktopPane();
        setContentPane(content);
        //getContentPane().add(content, BorderLayout.CENTER);
        MitarbeiterPanel maPanel = new MitarbeiterPanel();
        maPanel.init();
        JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
        maFrame.getContentPane().setLayout(new BorderLayout());
        maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
        maFrame.setSize(200, 300);
        maFrame.setVisible(true);
        content.add(maFrame);
        
        this.initMenu();
    }
   
    public void initMenu() {
      // Erzeugen einer Menüleiste
      JMenuBar menuBar = new JMenuBar();
       
      // Erzeugen von 3 Menüpunkten für die Menüleiste
      JMenu MenuePkt1 = new JMenu("Menü-1");
      JMenu MenuePkt2 = new JMenu("Menü-2");
      JMenu MenuePkt3 = new JMenu("Menü-3");
       
      // Erzeugen einzelner Menüpunkte
      JMenuItem item1_Menu1 = new JMenuItem( "Item-1 M1" );
      JMenuItem item2_Menu1 = new JMenuItem( "Item-2 M1" );
      JMenuItem item3_Menu1 = new JMenuItem( "Item-3 M1" );
       
      JMenuItem item1_Menu2 = new JMenuItem( "Item-1 M2" );
      JMenuItem item2_Menu2 = new JMenuItem( "Item-2 M2" );
       
      JMenuItem item1_Menu3 = new JMenuItem( "Item-1 M3" );
       
      // die neuen Einträge den jeweiligen Menüs hinzufügen!
      MenuePkt1.add( item1_Menu1 );
      MenuePkt1.add( item2_Menu1 );
      MenuePkt1.add( item3_Menu1 );
       
      MenuePkt2.add( item1_Menu2 );
      MenuePkt2.add( item2_Menu2 );
       
      MenuePkt3.add( item1_Menu3 );
         
      // Hinzufügen der 3 Menüpunkte zur Menüleiste
      menuBar.add( MenuePkt1 );
      menuBar.add( MenuePkt2 );
      menuBar.add( MenuePkt3 );
       
      // TODO das Hinzufügen der Menüleiste zu Deinem Projekt ...
      this.add( menuBar );
   }
}
```

Man achte auch auf die Änderungen beim TODO und in der init()-Methode.


----------



## DaDonDerDritte (29. Oktober 2009)

Ok thx das ganze geht ohne Fehler, aber eine Menüleiste habe ich jetzt nicht mehr


----------



## Tim Bureck (29. Oktober 2009)

Ach.. ähm kleiner Fehler vom Pokalschreck und mir 

Statt


```
this.add( menuBar );
```

sollte das heißen:


```
this.setJMenuBar(menuBar);
```


----------



## vfl_freak (29. Oktober 2009)

Tim Bureck hat gesagt.:


> Ach.. ähm kleiner Fehler vom Pokalschreck und mir



Jau, Tim hat natürlich Recht ...

'Pokalschreck' bin aber nicht - habe ja nicht mitgespielt, sondern nur angefeuert 

Gruß
Klaus


----------



## DaDonDerDritte (29. Oktober 2009)

THX, eeendlich bin ich einen Schritt weiter Das war aber auch ne schwere Geburt
Nun kommen wir zur eigentlichen Frage zurück, nämlich zum ActionListener. Wie ich dem ein Item zuweise wurde ja bereits gepostet, aber der ActionListener muss ja noch nach oben zur public class.
Meine public class sieht ja folgendermaßen aus

```
public class MainCalendarFrame extends JFrame  {
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public MainCalendarFrame() {
        super("TeamCal Plus");
    }
```
Wie bekomm ich da jetzt noch den ActionListener mit rein, all meine Basteleien haben nicht funktioniert
Grüße und danke


----------



## Tim Bureck (29. Oktober 2009)

Du hast da mehrere Möglichkeiten. Ich erklär dir die mal kurz:

1. Eigene Klasse
Du schreibst eine ganz eigene Klasse, die das Interface ActionListener implementiert und die entsprechenden Methode überschreibt.


```
public class MyActionListener implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
        // tu etwas
    }
}
```

2. Innere Klasse
Du schreibst in deiner MainCalendarFrame eine innere Klasse. Das sieht in etwa so aus:


```
public class MainCalendarFrame {
    
    // normale Methoden usw.
    
    private class MyActionListener implements ActionListener {
        public void actionPerformed(ActionEvent ae) {
            // tu etwas
        }
    }
}
```

In diesen beiden Fällen fügst du dann wie folgt deinen ActionListener hinzu:


```
item1_Menu1.addActionListener(new MyActionListener());
```

...in der initMenu()-Methode hinter der instanziierung von item1_Menu1.

3. Anonymer Typ
Das ist die Variante, die ich eingangs erläutert hatte. Man erstellt hierbei eine Klasse, die nur dieses eine Mal verfügbar ist. Kann ganz nützlich sein, wenn man dieses Event, was passieren soll, nur an einer Stelle benötigt.


```
item1_Menu1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
        //tu etwas
    }
}
```

So sieht das ganze dann aus. Ich hoffe, dass das einigermaßen verständlich war.


----------



## DaDonDerDritte (29. Oktober 2009)

Vielen Dank, das schaut ja schonmal ganz gut bei mir aus Nun muss es ja aber weiter gehen. Sagen wir ich drücke im menü1 auf item1 dann soll sich n fenster in dem großen fenster öffnen. Um das ganze konkreter zu machen, ich klicke im Menü auf Nutzer, dann soll er das Fenster Nutzer (welches bereits "gebaut" wurde) öffnen. Ich hoffe das war verständlich So langsam komme ich hier mal voran.
Grüße


----------



## vfl_freak (29. Oktober 2009)

DaDonDerDritte hat gesagt.:


> Vielen Dank, das schaut ja schonmal ganz gut bei mir aus





DaDonDerDritte hat gesagt.:


> Nun muss es ja aber weiter gehen.


Oh Freude .....



DaDonDerDritte hat gesagt.:


> Sagen wir ich drücke im menü1 auf item1 dann soll sich n fenster in dem großen fenster öffnen. Um das ganze konkreter zu machen, ich klicke im Menü auf Nutzer, dann soll er das Fenster Nutzer (welches bereits "gebaut" wurde) öffnen. Ich hoffe das war verständlich So langsam komme ich hier mal voran.


ok, sagen wir dass ..... ;-]

Und was genau ist nun Deine Frage
Weißt Du nicht, wie man eine Action in einen ActionListener einbaut ? ? ? 

Gruß
Klaus


----------



## DaDonDerDritte (29. Oktober 2009)

> Weißt Du nicht, wie man eine Action in einen ActionListener einbaut ? ? ?


Genau

Der von dir eingegebene Text ist zu kurz. Bitte erweitere den Text auf die minimale Länge von 10 Zeichen.


----------



## vfl_freak (29. Oktober 2009)

Schau Dir mal den zweiten Post in diesem Thread an, da steht das Meiste schon drin (Z. 26 und 33ff) ! ! !

Desweiteren verweise ich mal lustig auf  oder auf Links, wie ich sie hier in diesem Thread auch schon gepostet habe ! ! !

hmm ... und ganz ehrlich: ein bisschen mehr Eigeninitiative könnte nicht schaden  

Versuche es mal erst alleine hin zu bekommen ! Nur so lernst Du dann auch was dabei! Wenn Du dann eine konkrete Frage zu Deinen Sourcen hast, kannst Du Dich hier gerne melden 

Ich glaube nicht, dass hier irgendwer Lust hat, Dich jetzt die nächsten Tage/Wochen/Monate durch Dein Projekt zu führen und Dir für jeden lax geäußerten Wunsch Code zuzuposten ..... ;-]

Gruß
Klaus


----------



## DaDonDerDritte (29. Oktober 2009)

Ich google ja andauernd und Versuche viel rum, aber wenns nicht klappt frage ich eben hier. Ich Frage im Moment eh nur so viel, weil mein Kollege diese Woche nicht da ist, welcher mir dabei hilft. Aber ich wollte diese Woche trotzdem was schaffen, und es nicht einfach links liegen lassen
Also keine Angst, ihr müsst mich keine Wochen/Monate mehr ertragen


----------



## vfl_freak (29. Oktober 2009)

> Weißt Du nicht, wie man eine Action in einen ActionListener einbaut ? ? ?





DaDonDerDritte hat gesagt.:


> Genau



Na, ich denke, dass diese Seite alle (Anfänger-)Fragen beantworten sollte ... 

http://www.dpunkt.de/java/Programmieren_mit_Java/Ereignisbehandlung/1.html

Gruß
Klaus


----------



## DaDonDerDritte (30. Oktober 2009)

Hallo,
ich habe dort etwas gelesen, ist echt nicht schlecht für anfänger. Wenn ich nun auf einen meiner Menüpujnkte klicke, kommt immer folgender Fehler in der console.


```
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at com.six.calendar.pr.MainCalendarFrame.actionPerformed(MainCalendarFrame.java:143)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```
Und ich weiß nicht woran das liegt:-(


----------



## vfl_freak (30. Oktober 2009)

Moin,

was genau steht denn in der Zeile, wo die Exception auftritt   (MainCalendarFrame.java:143)

Etwas Code wäre schon gut ;-]

Gruß
Klaus


----------



## DaDonDerDritte (30. Oktober 2009)

```
if( evt.getSource() instanceof JMenuItem )
```
Das ist die Zeile.


----------



## vfl_freak (30. Oktober 2009)

ok, demnach ist "JMenuItem" == NULL .....

Poste doch einfach den gesamten Code (bitte mit Code-Tags), damit man den Zusammenhang sehen sehen kann ! ! !

Gruß
Klaus


----------



## DaDonDerDritte (30. Oktober 2009)

Das ist der gesamte Code. Und dort habe ich angegeben dass item1_Menu1 eine Funktion bekommen soll.

```
package com.six.calendar.pr;
 
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

 
 
 
public class MainCalendarFrame extends JFrame implements ActionListener   {
	
    /**
	 * 
	 */
	
	private static final long serialVersionUID = 1L;

	public MainCalendarFrame() {
        super("TeamCal Plus");
    }
   
    public void init() {
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        //getContentPane().setLayout(new BorderLayout());
        JDesktopPane content = new JDesktopPane();
        setContentPane(content);
        //getContentPane().add(content, BorderLayout.CENTER);
        MitarbeiterPanel maPanel = new MitarbeiterPanel();
        maPanel.init();
        JInternalFrame maFrame = new JInternalFrame("Mitarbeiter", true, true, true, true);
        maFrame.getContentPane().setLayout(new BorderLayout());
        maFrame.getContentPane().add(maPanel, BorderLayout.CENTER);
        maFrame.setSize(200, 300);
        maFrame.setVisible(true);
        content.add(maFrame);
       
        this.initMenu();
    }
   
    public void initMenu() {
      // Erzeugen einer Menüleiste
      JMenuBar menuBar = new JMenuBar();
       
      // Erzeugen von 3 Menüpunkten für die Menüleiste
      JMenu MenuePkt1 = new JMenu("TeamCal Plus");
      JMenu MenuePkt2 = new JMenu("Bearbeiten");
      JMenu MenuePkt3 = new JMenu("Ansicht");
      JMenu MenuePkt4 = new JMenu("Optionen");
      JMenu MenuePkt5 = new JMenu ("Hilfe");
       
      // Erzeugen einzelner Menüpunkte
      // Menüpunkt 1
      JMenuItem item1_Menu1 = new JMenuItem( "Anmelden", new ImageIcon("http://www.tutorials.de/forum/images/login.png"));
      item1_Menu1.addActionListener(this);
      item1_Menu1.setActionCommand("Anmelden");

      
      //Menüpunkt 2
      JMenuItem item1_Menu2 = new JMenuItem( "Mitarbeiter hinzufügen", new ImageIcon("http://www.tutorials.de/forum/images/ico_add.png"));
      item1_Menu2.addActionListener(this);
      
      JMenuItem item2_Menu2 = new JMenuItem( "Mitarbeiter bearbeiten", new ImageIcon("http://www.tutorials.de/forum/images/tools.jpg"));
      item2_Menu2.addActionListener(this);
      JMenuItem item3_Menu2 = new JMenuItem( "Mitarbeiter löschen", new ImageIcon("http://www.tutorials.de/forum/images/delete.jpg")); 
      item3_Menu2.addActionListener(this);
      
      //Menüpunkt 3
      JMenuItem item1_Menu3 = new JMenuItem( "Kalender", new ImageIcon("http://www.tutorials.de/forum/images/kalender.png"));
      item1_Menu3.addActionListener(this);
      JMenuItem item2_Menu3 = new JMenuItem( "Jahreskalender", new ImageIcon("http://www.tutorials.de/forum/images/jahreskalender.png"));
      item2_Menu3.addActionListener(this);
      
      //Menüpunkt 4
      JMenuItem item1_Menu4 = new JMenuItem ( "Nutzer", new ImageIcon("http://www.tutorials.de/forum/images/nutzer.png"));
      item1_Menu4.addActionListener(this);
      JMenuItem item2_Menu4 = new JMenuItem ( "Gruppen", new ImageIcon("http://www.tutorials.de/forum/images/gruppen.png"));
      item2_Menu4.addActionListener(this);
      JMenuItem item3_Menu4 = new JMenuItem ( "Gruppenzuordnung", new ImageIcon("http://www.tutorials.de/forum/images/gruppenzuordnung.png"));
      item3_Menu4.addActionListener(this);
      JMenuItem item4_Menu4 = new JMenuItem ( "Abwesenheitstypen", new ImageIcon("http://www.tutorials.de/forum/images/abwesenheitstypen.png"));
      item4_Menu4.addActionListener(this);
      JMenuItem item5_Menu4 = new JMenuItem ( "Feiertage", new ImageIcon("http://www.tutorials.de/forum/images/feiertage.png"));
      item5_Menu4.addActionListener(this);
      JMenuItem item6_Menu4 = new JMenuItem ( "Datenbankverwaltung", new ImageIcon("http://www.tutorials.de/forum/images/datenbankverwaltung.png"));
      item6_Menu4.addActionListener(this);
      
      //Menüpunkt 5
      JMenuItem item1_Menu5 = new JMenuItem ( "Über TeamCal Plus", new ImageIcon("http://www.tutorials.de/forum/images/teamcal.png"));
      item1_Menu5.addActionListener(this);
      
      // die neuen Einträge den jeweiligen Menüs hinzufügen!
      //1
      MenuePkt1.add( item1_Menu1 );
      
      //2 
      MenuePkt2.add( item1_Menu2 );
      MenuePkt2.add( item2_Menu2 );
      MenuePkt2.add( item3_Menu2 );
      
      //3 
      MenuePkt3.add( item1_Menu3 );
      MenuePkt3.add( item2_Menu3 );
      
      //4
      MenuePkt4.add( item1_Menu4);
      MenuePkt4.add( item2_Menu4);
      MenuePkt4.add( item3_Menu4);
      MenuePkt4.add( item4_Menu4);
      MenuePkt4.add( item5_Menu4);
      MenuePkt4.add( item6_Menu4);
      
      //5
      MenuePkt5.add( item1_Menu5);
         
      // Hinzufügen der 5 Menüpunkte zur Menüleiste
      menuBar.add( MenuePkt1 );
      menuBar.add( MenuePkt2 );
      menuBar.add( MenuePkt3 );
      menuBar.add( MenuePkt4);
      menuBar.add( MenuePkt5);
       
      // TODO das Hinzufügen der Menüleiste zu Deinem Projekt ...
      this.setJMenuBar(menuBar);
   }

	@SuppressWarnings("null")
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
		EventObject evt = null;
		if( evt.getSource() instanceof JMenuItem )
        { 
			String item1_Menu1 = ((ActionEvent) evt).getActionCommand();
			
			 if( item1_Menu1.equals("Beenden") )
	            {
	                String msg = new String( "Möchten Sie das Programm beenden ?" );
	                Component AppWindow = null;
					int retVal = JOptionPane.showConfirmDialog( AppWindow, msg, "Beenden",
	                        JOptionPane.YES_NO_OPTION);
	                if( retVal == JOptionPane.YES_OPTION )
	                {   
	                    System.exit(0);
	                }
	            } /* if */
	        // ...
	        } /* if */
	    } /* actionPerformed() */
	{ /* class AppMenue */
	}
}
```


----------



## vfl_freak (30. Oktober 2009)

Klammere Java-Code bitte immer, indem Du die Begriffe CODE durch JAVA ersetzt 
Hierdurch werden u. a. auch die Zeilennummern dargestellt und man muss nicht lange durch zählen .....
Zudem ist dann die farbliche Unterlegung vorhanden!
Dass kann Du übrigens auch durch "Ändern" eines älteren Posts erledigen.

Dein Problem ist doch offensichtlich:

```
EventObject evt = null;
if( evt.getSource() instanceof JMenuItem )
// .....
```
Du setzt "evt" auf NULL und versucht dann damit was zu machen ... also bekommst Du an der Stelle die NullPointerException 

Wo kommt den dieser Code her? 
Event. musst Du das Event-Objekt mit übergeben ...

Gruß
Klaus


----------



## DaDonDerDritte (30. Oktober 2009)

Ich weiß schon wie man Java Tags macht, aber da du explizit in deiner Klammer auf Code-Tags hingewiesen hast habe ich diese benutzt
Ja das Problem ist, wenn ich die Zeile weglasse, unterstreicht er mir das evt. Das war die quick fix Lösung.
"evt cannot be resolved" Ist die Fehlermeldung.
Edit: Habe nun eine andere quick fix Lösung ausprobiert, nun sind alle Fehler beseitigt. Also er unterstreicht nicht mehr evt., aber ich habe immernoch den gleichen Fehler wenn ich das Menü benutze. Am Code wurde nichts verändert, habe nur gesagt er soll das evt. als field machen.


----------



## Tim Bureck (30. Oktober 2009)

Und weitere nützliche Lektüre, die Java Documentation.  Klick mal hier. Oben im Klassenbaum siehst du, dass ActionEvent (welches du glücklicherweise übergeben bekommst) ein EventObject ist. Das könntest du dann in deiner if-Abfrage benutzen.


----------



## vfl_freak (30. Oktober 2009)

DaDonDerDritte hat gesagt.:


> Ich weiß schon wie man Java Tags macht, aber da du explizit in deiner Klammer auf Code-Tags hingewiesen hast habe ich diese benutzt



Nun ist "CODE-Tags" ja auch nur der Überbegriff 

Auch "JAVA-Tags", "HTML-Tags" etc. sind "CODE-Tags"  

Gruß
Klaus


----------



## DaDonDerDritte (4. November 2009)

Hallo,
ich hab mal wieder nen Problem, diesmal aber nen völlig anderes. Ich versuche mich zurzeit an Tabellen in meinem Projekt, aber das ist nebensächlich.
Ich habe eine neue Java Datei erstellt mit folgender public class

```
public class SimpleTable
```
Diese wurde mir rot unterstrichen also habe ich quick fix gemacht
The public type SimpleTable must be defined in its own file
- Rename compilation unit to simpletable.java

Dies hab ich dann gewählt, dann hat er mir meine Datei in simpleTable.Java umbenannt. Anschließend nachdem ich alles probiert habe was ich wollte, habe ich die gesamte Datei wieder gelöscht, ABER nun wenn ich mein tool starten will, verlangt er immer nach 
"java.lang.NoClassDefFoundError: com/six/calendar/pr/SimpleTable
Caused by: java.lang.ClassNotFoundException: com.six.calendar.pr.SimpleTable" Also hat er noch irgendwo was geändert, aber wo?


----------



## vfl_freak (4. November 2009)

Moin,

hmm, schwer zu beantworten - zumal mir der Pfad nix sagt ...  :-(

Klick mal zuerst im Paket-Explorer auf das Projekt und wähle <F5> ("Aktualisieren"). 
Ggf. gibt es dort noch Verweise auf die gelöschte Datei !

Gruß
Klaus


----------



## DaDonDerDritte (5. November 2009)

Vielen Dank, es geht nun wieder Jetzt mal was einfaches, ich bekomms nicht hin nen Separator zu setzen.
Folgender Befehl funktioniert einfach nicht
JMenuItem.addSeparator ();

```
JMenuItem item1_Menu2 = new JMenuItem( "Mitarbeiter hinzufügen", new ImageIcon("images/ico_add.png"));
      item1_Menu2.addActionListener(new ActionListener() {
    	  @Override
    	  public void actionPerformed(ActionEvent evt) {
    		  openNewMitarbeiterPanel();
    	  } 
      });
```
Ich seh da einfach keinen Fehler


----------



## vfl_freak (5. November 2009)

DaDonDerDritte hat gesagt.:


> Folgender Befehl funktioniert einfach nicht
> JMenuItem.addSeparator ();
> Ich seh da einfach keinen Fehler



Moin,

aber ich 
Das kannauch nicht funktionierne, da Du den Separator nicht dem MenüItem, sondern dem Menüpunkt (ZWISCHEN den Items) hinzufügen musst 


```
JMenu MenuePkt1 = new JMenu( "Datei" );
MenuePkt1.addSeparator();
```

Gruß
Klaus


----------



## DaDonDerDritte (5. November 2009)

MenuePkt1 usw. ist bei mir ja das Menü selbst, ich will aber die einzelnen Menü Unterpunkte (bei mir item1_Menu1 usw.) mit einem Separator unterteilen.

```
JMenuItem item1_Menu1 = new JMenuItem( "Anmelden", new ImageIcon("images/login.png"));
      item1_Menu1.addActionListener(new ActionListener() {
    	  @Override
    	  public void actionPerformed(ActionEvent evt) {
    		  openNewMitarbeiterAnmelden();
    	  } 
      });
      item1_Menu1.addSeparator();
```
Funktioniert aber nicht


----------



## vfl_freak (5. November 2009)

> MenuePkt1 usw. ist bei mir ja das Menü selbst, ich will aber die einzelnen Menü Unterpunkte (bei mir item1_Menu1 usw.) mit einem Separator unterteilen.



Ja, eben  

Du kannst einen Separator nur einem MENÜ, nicht einen einzelnen MenüPUNKT zuweisen ! ! !


```
JMenuItem item1 = new JMenuItem( "1" );
JMenuItem item2 = new JMenuItem( "2" );
JMenuItem item3 = new JMenuItem( "3" );
JMenuItem item4 = new JMenuItem( "4" );

JMenu MenuePkt1 = new JMenu( "Datei" );

MenuePkt1.add( item1 );
MenuePkt1.add( item2 );
MenuePkt1.addSeparator();
MenuePkt1.add( item3 );
MenuePkt1.addSeparator();
MenuePkt1.add( item4 );

// erzeugt das Menü "Datei" so:
// 1
// 2
// -----
// 3
// -----
// 4
```

Gruß
Klaus


----------



## DaDonDerDritte (5. November 2009)

THX, jetzt gehts


----------



## DaDonDerDritte (5. November 2009)

Gibt es eine elegantere Lösung für Text Felder als JLabel? Die anderen wie JTextField, JTextArea kann man ja alle im nachhinein verändern. Ich will aber nen feststehenden Text haben, der nicht veränderbar ist. Aber mit JLabel bin ich irwie nicht so recht zufrieden.


----------



## vfl_freak (5. November 2009)

DaDonDerDritte hat gesagt.:


> Gibt es eine elegantere Lösung für Text Felder als JLabel? Die anderen wie JTextField, JTextArea kann man ja alle im nachhinein verändern. Ich will aber nen feststehenden Text haben, der nicht veränderbar ist. Aber mit JLabel bin ich irwie nicht so recht zufrieden.



Äääh ... Bahnhof 
Was genau meinst Du jetzt 

Willst Du 
(a) Daten eingeben können 
(b) festen Text anzeigen
(c) weiß nicht/nichts von dem ... 

Was gefällt Dir an JLabel nicht ?

Gruß
Klaus


----------

