Menüleiste erstellen

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.
 
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) !

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
 
Kann mir das bitte nochmal jemand genauer erklären? Mit diesem Code
Java:
 /** 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
 
Zuletzt bearbeitet:
JMenuItem erbt von AbstractButton die Methode addActionListener. Einfach ein Objekt deines ActionListeners so hinzufügen (hier im Beispiel mit einem anonymen Typ).

Java:
menuItem.addActionListener(new ActionListener {
    public void actionPerformed(ActionEvent ae) {
        // tu etwas
    }
});
 
Ich versteh das gerade nicht:confused: 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.
Java:
 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);
        }
 
    }
}
 
Moin,

nö, so klappt das nicht :eek:

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 :p).
Dann kannst Du jeder einzelnen Variable einen ActionListener zuweisen und drauf reagieren !

Gruß
Klaus
 
Okay machen wir das ganze mal Schritt für Schritt:D
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...:)
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;


@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);
	}

}
	}
 
Moin,

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!


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:
Java:
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 :confused:
Gruß
Klaus
 

Neue Beiträge

Zurück