JMenuBar wird nicht in JFrame angezeigt

Zuendi

Mitglied
Hallo zusammen,
ich habe folgendes Problem. Es gibt 2 Klassen (Start und MenuPanel). In der Klasse Start habe ich den JFrame erstellt und möchte dort eine JMenuBar einfügen. Diese wird in der Klasse MenuPanel erzeugt.

Sie wird aber nicht angezeigt.

Hier mal die beiden Klassen. Ich hoffe mir kann jemand nen Tip geben.

Java:
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.UIManager;


public class Start extends JFrame implements ActionListener
{
	// Bildschirmbreite
	int screenWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
	// Bildschirmhoehe
	int screenHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
	
	JFrame jframe;
	
	
	public Start()
	{
		jframe = new JFrame("Memory");
		jframe.setDefaultCloseOperation(EXIT_ON_CLOSE);
				
		try
		{
			// LookAndFeel setzen
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		jframe.setBounds(screenWidth/2-250, screenHeight/2-250, 500, 500);
		jframe.setResizable(false);
		
		MenuPanel menupanel = new MenuPanel();
		jframe.setJMenuBar(menupanel);
		
		jframe.setVisible(true);
	}
		
	public static void main(String[] args)
	{
		new Start();		
	}

	public void actionPerformed(ActionEvent arg0)
	{
		
	}
}

Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;


public class MenuPanel extends JMenuBar implements ActionListener
{
	JMenuBar bar;
	JMenu menuSpiel, neuesSpiel, menuHilfe;
	JMenuItem spielBeenden, faq, hilfe, item4x4, item6x6;
	
	public MenuPanel()
	{
		bar = new JMenuBar();
		menuSpiel = new JMenu("Spiel");
		neuesSpiel = new JMenu("neues Spiel");
		menuHilfe = new JMenu("Hilfe");
		spielBeenden = new JMenuItem("Spiel beenden");
		faq = new JMenuItem("FAQ");
		hilfe = new JMenuItem("Hilfe");
		item4x4 = new JMenuItem("4x4");
		item6x6 = new JMenuItem("6x6");
		
		bar.add(menuSpiel);
		bar.add(menuHilfe);
		menuSpiel.add(neuesSpiel);
		menuSpiel.add(spielBeenden);
		neuesSpiel.add(item4x4);
		neuesSpiel.add(item6x6);
		menuHilfe.add(faq);
		menuHilfe.add(hilfe);
		
		spielBeenden.addActionListener(this);
		item4x4.addActionListener(this);
		item6x6.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent object)
	{
		if(object.getSource() == spielBeenden)
		{
			int abfrage = JOptionPane.showConfirmDialog(null,"Möchten Sie das Programm beenden?");
			if(abfrage == 0)
			{
				System.exit(0);
			}
		}
	}
}
 
du leitest von JMenuBar ab und hast trotzdem noch eine JMenuBar member variable, zu der du die JMenu Objekte hinzufügst. Deine eigetnliche JMenuBar bleibt jedoch leer. Versuchs mal so:

Java:
public MenuPanel()
    {       
        menuSpiel = new JMenu("Spiel");
        neuesSpiel = new JMenu("neues Spiel");
        menuHilfe = new JMenu("Hilfe");
        spielBeenden = new JMenuItem("Spiel beenden");
        faq = new JMenuItem("FAQ");
        hilfe = new JMenuItem("Hilfe");
        item4x4 = new JMenuItem("4x4");
        item6x6 = new JMenuItem("6x6");
        
        this.add(menuSpiel);
        this.add(menuHilfe);
        menuSpiel.add(neuesSpiel);
        menuSpiel.add(spielBeenden);
        neuesSpiel.add(item4x4);
        neuesSpiel.add(item6x6);
        menuHilfe.add(faq);
        menuHilfe.add(hilfe);
        
        spielBeenden.addActionListener(this);
        item4x4.addActionListener(this);
        item6x6.addActionListener(this);
    }
 

Neue Themen


Zurück
Oben