Swing JMenu falsch positioniert

Timo Christ

Neues Mitglied
Guten Tag,

Ich habe ein Problem, bei dem ich alleine nicht mehr weiter komme. Da ich mein Quelltext besser strukturieren wollte habe ich mich dazu entschlossen eine Klasse Hauptmenu zu erstellen, die von JMenuBar erbt. In dieser habe ich dann im Konstruktor JMenus und diesen dann wiederum JMenuItems hinzugefügt. In meinem Hauptfenster (extends JFrame) habe ich dann diese Menubar mittels setJMenuBar hinzugefügt. Dies funktioniert soweit auch... Wenn ich nun jedoch auf ein Menu klicke, dann wird das Menu an der falschen Stelle geöffnet. Ich vermute, dass der Rahmen von Windows bei der Positionierung nicht mit einbezogen wird, aber warum?

Hier ein Screen Shot:
menufail.png


Hier der vereinfachte Code
Java:
public class Hauptfenster extends JFrame
{
    .....
    Deklarationen
    .....

    public Hauptfenster(String title)
    {
        super(title);
        setJMenuBar(new Hauptmenu());
        getContentPane.add(new SpielFeld()); //Spielfeld erbt von JPanel
        ....
        pack();
        setVisible(true);
    }

    .....
    Weitere private Funktionen
}

Java:
public class Hauptmenu extends JMenuBar
{
    ....
    Deklaration der MenuPunkte (JMenu, JMenuItem, JCheckBoxMenuItem)
    ....
    public Hauptmenu()
    {
         super();
         add(menu1);
         add(menu2);

         menu1.add(menuItem1);
         ....
         ....
         ....
     }

      weitere private Funktionen
}

Ich habe im Internet einige Beispiele gesehen, die auch so strukturiert sind. Mit dem Unterschied, dass es funktioniert... Ich suche allerdings schon seit 4 Stunden verzweifelt den Fehler...

Vielen Dank für die Hilfe im Voraus
Timo Christ
 
Zuletzt bearbeitet:
Also, in den hier geposteten Codeausschnitten ist kein Fehler. Von der Vorgehensweise sollte das ganze auch passen. Der Fehler liegt irgendwo anders.
 
Danke für die Schnelle Antwort.

Was könnte dann bewirken, dass der Fensterrahmen nicht mit einbezogen wird bei der Positionierung?

Timo

Edit: Oh Mann ein Fehler, der an Blödheit fast nicht zu übertreffen ist... Und vor allem, dass ich da Stundenlang nicht darauf gekommen bin... Ich habe in meiner Fehlerbeschreibung nicht erwähnt, dass ich dem Konstruktor eine Referenz auf das Hauptfenster mitgebe und wenn man das so programmiert, dann kann man auch gleich eine set und get methode für die Hauptfenster Referenz machen... Diese Referenz hab ich parent genannt. Ratet mal wie ich die get und set Methoden genannt hab...

WHAAAAAAAAAAAAAAAAAAAAAAAAA mich selbst schlagen muss

Lösung: ich hab also getParent überschrieben
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben