Swing JFrame mit JMenuBar, allerdings ohne Erfolg

Jimmy

Mitglied
Hallo,

Und zwar habe ich hier einen Bruchrechner programmiert. Ich weiß, dass das ganze nicht sehr sauber geschehen ist, weil es mir erstmal darum ging alles zum "laufen" zu bekommen. Aufjedenfall funktionieren die Funktionen, sprich man kann Brüche addieren,subtrahieren,dividieren und multiplizieren.

Nun mein Problem. Ich habe das ganze mit JFrame gemacht, lief auch alles ganz gut, bis ich eine Menübar einfügen wollte.

Habe das Prinzip so verstanden :

Ich lege eine Menübar ( JMenuBar ), welche wiederrum Menüs ( JMenu ) besitzt und in den Menüs gibt es halt "Funktionen" also die Items drin ( JMenuItem ). Also wie bei nem Browser oben

Datei Bearbeiten Ansicht Chronik ... sind alle zusammen die JMenuBar, welche allerdings aus den JMenus Datei,Bearbeiten,Ansicht,... besteht

Und in den ganzen Dingen wie Datei gibt es halt die Funktionen.

So habe ich das bei mir auch aufgebaut. Eine Bar mit erstmal einem Menü und zwei Items drinne. Allerdings sehe ich weder eine Bar, noch ein Menü. Vielleicht habe ich etwas vergessen, allerdings bin ich noch neu in Java. Wüsste nur nicht was. Wäre schön wenn mir einer ein Tipp geben könnte, bzw irgendwelche Vorschläge zum lösen.

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 * Beschreiben Sie hier die Klasse Zeichenfeld.
 * 
 * @author (Jim) 
 * @version (1.0)
 */
public class Zeichenfeld extends JFrame implements ActionListener
{
     ....
     private JMenu menu;
     private JMenuItem menu1,menu2;
     private JMenuBar mbar;
     
     /**
     * Konstruktor für Objekte der Klasse Zeichenfeld
     */
    public Zeichenfeld()
    {
        // Instanzvariable initialisieren
        super("Bruchrechner");
        super.setSize(250,300);
        super.setLocation(4,4); // Position des Fensters auf dem Bildschirm
        super.setLayout(null);
        super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  // schliesse auch Programm, nicht nur Fenster
        super.setJMenuBar(mbar);
        super.setVisible(true);
        
        //// Menubar ////
        mbar = new JMenuBar();              // JMenuBar anlegen
        mbar.setBounds(0,0,25,300);
        menu = new JMenu("Test");      // In der Bar ist ein Menu zum öffnen
        menu.setBounds(0,0,25,25);
        mbar.add(menu);                         // Menu der Bar zufügen
        menu1 = new JMenuItem("Datei"); // MenuItems ins Menu einfügen
        menu.add(menu1);
        menu2 = new JMenuItem("Test");
        menu.add(menu2);

        //// Buttons ////
........

  }
}

Dann danke schonmal und schönen Abend noch :)
 

nickname

Bekanntes Mitglied
ich glaube, es liegt daran, dass du zuerst das Menu der MenuBar übergibst und dann erst die
Item an das Menu.

Und da der konstruktor das sequentiell abarbeitet, musst du zuerst die MenuBar erstellt haben, bevor
du diese aufrufst, bzw. dein Fenster gebildet wird.
Du hast schon visible ausgeführt ehe eine Instanz von JMenuBar überhaupt erzeugt wird.


gruß nickname
 

Onkel Hatti

Bekanntes Mitglied
Obs das jetzt ist, weiss ich nicht genau, aber die Klasse Zeichenfeld ist von JFrame abgeleitet, also ist die Klasse Zeichenfeld jetzt auch ein JFrame. Im Konstruktor greifst du mit "super" aber auf die Oberklasse, also JFrame zu. Die ganzen Einstellungen beziehen sich aber auf das Zeichenfeld, also "this".

Ach ja, und was sollen die vielen ".setBounds" ? Die JMenubar, die mittels .setJMenuBar an den JFrame übergeben wird, ist immer grad unterhalb der Titelzeile, da braucht man kein .setBounds, ebensowenig, wie für die JMenuItems.

Hatti
 

Michael...

Top Contributor
Vermutlich liegt's einfach nur daran, dass setVisible(true) - Zeile 29 - zu früh aufgerufen wird.
--> setVisible erst aufrufen, nachdem das Layout steht!!
 

Tharsonius

Bekanntes Mitglied
Wenn das Menü geändert wird, nachdem es eingebunden wird (was kein Problem ist), dann musst Du normalerweise ein menu.validate() aufrufen, damit sich das Menü neu aufbaut.

Also entweder die Reihenfolge ändern (erst Menü bauen und dann dem Frame setzen) oder ein validate() aufrufen.
 

Michael...

Top Contributor
Also entweder die Reihenfolge ändern (erst Menü bauen und dann dem Frame setzen) oder ein validate() aufrufen.
Ob das Menu erst aufgebaut wird und dann dem Frame zugeordnet wird oder um gekehrt ist egal - entscheidend ist das setVisible(true).
Nachträgliche (also wenn der Frame bereits sichtbar ist) Änderungen am Layout des Frames können müssen mit einem validate() mitgeteilt werden.
 
B

Beni

Gast
Der entscheidende Fehler liegt in der Tatsache, dass du "setJMenuBar" mit einem Wert von "null" aufrufst, und erst danach ein JMenuBar Objekt erstellst.
Java:
        super.setJMenuBar(mbar);
        mbar = new JMenuBar();

Vertausche mal die Zeilen 28 und 32.
 

Michael...

Top Contributor
Der entscheidende Fehler liegt in der Tatsache, dass du "setJMenuBar" mit einem Wert von "null" aufrufst, und erst danach ein JMenuBar Objekt erstellst.
Java:
        super.setJMenuBar(mbar);
        mbar = new JMenuBar();

Vertausche mal die Zeilen 28 und 32.
O.K. Voraussetzung dafür, dass eine MenuBar angezeigt wird ist, dass auch tatsächlich eine eingefügt wird. Hatte ich übersehen:oops:
 

Jimmy

Mitglied
Soviele Antworten, So Schnell... Garnicht gewohnt :)

Vielen lieben Dank an alle. Habe es gerade ausprobiert und siehe da, es funktioniert.

Und auch danke für den Tipp mit dem validate()

Jetzt noch eine letzte Frage, wenn ich in dem Aufgerufenen Menu was stehen habe, was nochmal aufgehen soll. Wie mache ich das?

Also sollte so aussehen:
Datei
Neu ---> Bruch1
---> Bruch2

Also das son MenuItem nochmal aufklappt.
 

Michael...

Top Contributor
Jetzt noch eine letzte Frage, wenn ich in dem Aufgerufenen Menu was stehen habe, was nochmal aufgehen soll. Wie mache ich das?

Also sollte so aussehen:
Datei
Neu ---> Bruch1
---> Bruch2

Also das son MenuItem nochmal aufklappt.
Kein MenuItem sondern ein JMenu verwenden. Man kann einem JMenu ein weiteres JMenu (als Untermenu) zuweisen.
 

Jimmy

Mitglied
Gut, habe es ausprobiert. Funktioniert alles wunderbar. Nurnoch ein paar Funktionen suchen. Aber das geht ja einfach per Actionlistener.

Ein dickes Danke an alle!
Grüße,
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
Madlip JMenuBar in JFrame AWT, Swing, JavaFX & SWT 5
B JFrame / JMenuBar => Anfängerprobleme AWT, Swing, JavaFX & SWT 2
Z JMenuBar wird nicht in JFrame angezeigt AWT, Swing, JavaFX & SWT 2
C JMenuBar im JFrame abgehackt AWT, Swing, JavaFX & SWT 7
H JFrame, JMenuBar, ScrollBar AWT, Swing, JavaFX & SWT 3
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 17
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
P JFrame schrumpft bei Doppelklick auf die Titelleiste AWT, Swing, JavaFX & SWT 0
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
D JFrame mindestgröße erzwingen AWT, Swing, JavaFX & SWT 2
H Swing JFrame mit JFXPanel NPE bei dispose() AWT, Swing, JavaFX & SWT 6
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
G Swing JFrame öffnen bei Pidgin Benachrichtigung AWT, Swing, JavaFX & SWT 5
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
G Resize JFrame AWT, Swing, JavaFX & SWT 8
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
S JFrame -> setVisible AWT, Swing, JavaFX & SWT 3
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
K SplashScreen neben JFrame behalten AWT, Swing, JavaFX & SWT 10
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
V JFrame wird nicht richtig angezeigt! AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben