Menüpunkte verschwinden hinter JFrame

Hallo habe folgendes Problem, wenn ich folgendes Coding compiliere, das Programm ausführe und dann versuche die Menüleiste zu öffnen werden die einzelnen Menüpunkte nicht angezeigt sondern verschwinden in den Hintergrund.

Wenn ich jedoch die Größe des Frames auf (350, 145) setze werden die Menüpunkte ohne Problem angezeigt. Was mach ich falsch? :confused:

PHP:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Hauptmenu extends JFrame
{
  Hauptmenu()
  {
    super("Hauptmenu");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    HauptmenuLayout();
  }

  void HauptmenuLayout()
  {
    createMenuleiste();

    JLabel lblOption = new JLabel("Wählen Sie eine Option aus.");

    JButton btnNeuenFilmanlegen = new JButton("Neuen Film anlegen");
    JButton btnSuchen = new JButton("Film suchen");
    JButton btnAlleFilmeanzeigen = new JButton("Alle Filme anzeigen");

    Panel panellblHauptmenu = new Panel();
    panellblHauptmenu.setLayout(new FlowLayout(FlowLayout.CENTER));
    panellblHauptmenu.add(lblOption);

    Panel panelbtnHauptmenu = new Panel();
    panelbtnHauptmenu.setLayout(new FlowLayout(FlowLayout.CENTER));
    panelbtnHauptmenu.add(btnNeuenFilmanlegen);
    panelbtnHauptmenu.add(btnSuchen);
    panelbtnHauptmenu.add(btnAlleFilmeanzeigen);

    add(panellblHauptmenu, BorderLayout.NORTH);
    add(panelbtnHauptmenu, BorderLayout.CENTER);
  }

  private void createMenuleiste()
  {
    JMenuBar leiste = new JMenuBar();
    JMenu gehezu = new JMenu("Gehe zu ...");

    JMenuItem nfa = new JMenuItem("Neuen Film anlegen");
    JMenuItem suchen = new JMenuItem("Film suchen");
    JMenuItem afa = new JMenuItem("Alle Filme anzeigen");

    gehezu.add(nfa);
    gehezu.add(suchen);
    gehezu.add(afa);

    gehezu.addSeparator();

    JMenuItem ende = new JMenuItem("Programm beenden");
    gehezu.add(ende);

    ende.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent e)
      {
        closeProgramm();
      }
    });

    leiste.add(gehezu);
    setJMenuBar(leiste);
  }

  void closeProgramm()
  {
    System.exit(0);
  }

  public static void main(String[] args)
  {
    Hauptmenu hm = new Hauptmenu();
    hm.setLocation(100, 100);
    hm.setSize(350, 150);
    hm.setResizable(false);
    hm.setVisible(true);
  }
}
 
Hallo Erdal,

danke für Deine Antwort. Habe ein bischen probiert und mir ist aufgefallen, dass das Label das ich erstelle die Menüpunkte überdeckt. Wenn ich das Label mit SOUTH an das Fensterende setze sind die Menüpunkte sichtbar. Leider habe ich keine Ahnung warum das so ist und wie ich das Problem beheben kann. Hast Du vielleicht eine Idee?

Gruß

Jack
 
Hallo Jack,

versuch doch mal folgendes:

panellblHauptmenu und panelbtnHauptmenu in ein neues JPanel hinzufügen. Dieses neue Panel dann dem JFrame adden. Damit hättest du die Verwendung von BL.NORTH direkt im JFrame vermieden.

Das ist eigentlich auch die übliche vorgehensweise, wie ich das bisher in einigen Javavorlesungen gesehen habe. Die GUI wird kommplett in einem Panel aufgebaut und zum Schluss dieses per

myframe.add(mypanel);

oder

myframe.setContentPane(mypanel);

eingebunden.


Vg Erdal
 
Zurück