Swing MenuBar wird verdeckt

Status
Nicht offen für weitere Antworten.

FiLe

Neues Mitglied
Hi,
habe das Problem, das mein Menü wenn es aufklappt hinter den Layouts ist.

Code:
package de.meinrechener;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

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

public class Hauptfenster extends JFrame {

/**
* 
*/
private static final long serialVersionUID = 1L;

// Instanzvariablen
private Panel eingabePanel, operatorenPanel, ergebnisPanel;

private TextField zahl1, zahl2;

private Button plus, minus, multi, divi;

private Label ergebnis;

private JMenuBar menueLeiste = new JMenuBar();

private JMenu menuDatei = new JMenu("Datei");
private JMenu menuBearbeiten = new JMenu ("Bearbeiten");

private JMenuItem itemOpen = new JMenuItem ("Öffnen...");
private JMenuItem itemClose = new JMenuItem ("Schliessen");
private JMenuItem itemEnd = new JMenuItem ("Beenden");

// Konstruktor
public Hauptfenster() {
super("Rechner");

menuDatei.add(itemOpen);
menuDatei.add(itemClose);
menuDatei.addSeparator();
menuDatei.add(itemEnd);

menueLeiste.add(menuDatei);
menueLeiste.add(menuBearbeiten);
this.setJMenuBar(menueLeiste);

this.addWindowListener (new WindowAdapter() {
public void windowClosing (WindowEvent e) {
System.exit(0);
}
});

// Layoutmanager für das Hauptfenster
this.setLayout(new GridLayout(4, 1));

// Aufbau des Eingabe-Panels
eingabePanel = new Panel();
eingabePanel.setLayout(new GridLayout(2, 1, 10, 10));

zahl1 = new TextField("Zahl 1");
zahl2 = new TextField("Zahl 2");

eingabePanel.add(zahl1);
eingabePanel.add(zahl2);

// Aufbau des Operatoren-Panels
operatorenPanel = new Panel();
operatorenPanel.setLayout(new FlowLayout());

plus = new Button("+");
minus = new Button("-");
multi = new Button("*");
divi = new Button("/");
operatorenPanel.add(plus);
operatorenPanel.add(minus);
operatorenPanel.add(multi);
operatorenPanel.add(divi);

// Events für die Knöpfe
plus.addActionListener(new KnopfAktion());
minus.addActionListener(new KnopfAktion());
multi.addActionListener(new KnopfAktion());
divi.addActionListener(new KnopfAktion());

// Aufbau des Ergebnis-Panels
ergebnisPanel = new Panel();

ergebnis = new Label("Bitte wählen!");

ergebnisPanel.add(ergebnis);

// Zusammensetzen der Panels im Container
this.add(eingabePanel);
this.add(operatorenPanel);
this.add(ergebnisPanel);

// Event-Handling für`s Hauptfenster
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

}

// Event-Handling für die Berechnung
class KnopfAktion implements ActionListener {
public void actionPerformed(ActionEvent e) {
// Rufe für alle Knöpfe die gleiche Funktion auf
berechnung(e);
}

}

private void berechnung(ActionEvent e) {

// Definition eines Ergebnisses
double erg = 0.0d;
// Umwandlung der Strings in Double
double z1 = Double.parseDouble(zahl1.getText());
double z2 = Double.parseDouble(zahl2.getText());

// Welcher Knopf wurde gedrückt
// Berechnen
if (e.getActionCommand() == plus.getLabel()) {
// Addition
erg = z1 + z2;
}
if (e.getActionCommand() == minus.getLabel()) {
// Subtraktion
erg = z1 - z2;
}
if (e.getActionCommand() == multi.getLabel()) {
// Multiplikation
erg = z1 * z2;
}
if (e.getActionCommand() == divi.getLabel()) {
// Division
erg = z1 / z2;
}

// Ergebnis ausgeben
ergebnis.setText(String.valueOf(erg));


} 



}


Main Klasse
Code:
package de.meinrechener;

 
public class MiniRechner {

    public static void main(String[] args) {

        Hauptfenster fenster = new Hauptfenster();
        fenster.pack();
        fenster.setVisible( true );
        
    }
}

An was liegt das?
Bin am verzweifeln.

Danke
 
...stimmt, aber zur Ergänzung: Schandro meint GUI-Komponenten (alles was von Component erbt). Die sollten icht miteinander gemischt werden.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben