Menüleiste erstellen

Hallo,
vielen Dank nochmal für deine Hilfe, wie ich dir langsam aufn Sack gehen muss:D
Habs nun so gemacht wie in deinem letzten Post.
Sieht nun so aus
Java:
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":confused: 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.
 
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
 
Das erste Problem ist viel banaler: Das ganze Zeug muss natürlich in eine Methode, einfach in die Klasse schreiben geht nicht. ;)

Java:
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.
 
THX, eeendlich bin ich einen Schritt weiter:) Das war aber auch ne schwere Geburt:eek:
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
Java:
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:D
Grüße und danke
 
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.

Java:
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:

Java:
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:

Java:
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.

Java:
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. :)
 
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
 
Vielen Dank, das schaut ja schonmal ganz gut bei mir aus:)

Nun muss es ja aber weiter gehen.
Oh Freude .....

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 ..... :rolleyes:;-]

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

Gruß
Klaus
 
Zurück