Frame mit Menüleiste

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

Folgendes Ausgangssituation:
Es soll eine neue MenuLeiste aus der Klasse MainFrame definiert werden!!

In der Klasse MainFrame mach ich dazu folgendes:
Code:
MenuLeiste MenuLeiste = new MenuLeiste(this);

So die andere Klasse MenuLeiste macht folgendes:

Code:
public class MenuLeiste extends JMenu
{
  private MainFrame myMainFrame;

  private static void
    addNewMenuItem(JMenu menu, String name, ActionListener listener)
    {
    JMenuItem mi = new JMenuItem(name);
    mi.setActionCommand(name);
    mi.addActionListener(listener);
    menu.add(mi);
    }

  public MenuLeiste(ActionListener listener) 
  {
  JMenu menue;
  //Menü "File"
      menue = new JMenu("File");
      addNewMenuItem(menue, "New", listener);
      addNewMenuItem(menue, "Print", listener);
      menue.addSeparator();
      addNewMenuItem(menue, "Exit", listener);
      this.add(menue);
 
  //Menü "Help"
      menue = new JMenu("Help");
      addNewMenuItem(menue, "Info", listener);
      this.add(menue);

Mein Problem:
Die Menüleiste wird im Frame nicht angezeigt!! WARUM?
Ansonsten wird mir kein Compile Fehler angezeigt!!

Danke im vorraus!!
Grüssle,
Tanja
 
jup hast Recht!! Bloss wie mach ich das jetzt noch 🙂
Hier mal der komplette Code der beiden Klassen:

Code:
package mypackage1;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import java.awt.*;
import java.awt.event.*;


public class MenuLeiste extends JMenu
{
  private MainFrame myMainFrame;

  private static void
    addNewMenuItem(JMenu menu, String name, ActionListener listener)
    {
    JMenuItem mi = new JMenuItem(name);
    mi.setActionCommand(name);
    mi.addActionListener(listener);
    menu.add(mi);
    }

  public MenuLeiste(ActionListener listener) 
  {
  JMenu menue;
  //Menü "File"
      menue = new JMenu("File");
      addNewMenuItem(menue, "New", listener);
      addNewMenuItem(menue, "Print", listener);
      menue.addSeparator();
      addNewMenuItem(menue, "Exit", listener);
      this.add(menue);
 
  //Menü "Help"
      menue = new JMenu("Help");
      addNewMenuItem(menue, "Info", listener);
      this.add(menue);
  
  }
}


-------------------------------------------------------------------

Code:
package mypackage1;
import javax.swing.UIManager;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MainFrame extends JFrame implements ActionListener
{
  //Container Instanz erzeugen
  JPanel mainPane = new JPanel();
  private MainFrameListener myMainFrameListener;
  
  public MainFrame()
  {
    //Titel des Frames festlegen
    super("Struktur Editor 2004");
    //Grösse des Frames festlegen(Pixel)
    setSize(800,600);
    //Bei entsprechender User Eingabe: Application und Frame schliessen
    ExitWindow exit = new ExitWindow();
    addWindowListener(exit);
    //Menüleiste mit Listener erzeugen
    MenuLeiste MenuLeiste = new MenuLeiste(this);
    //Regler erzeugen
    Regler newRegler = new Regler();
    //Toolbar erzeugen
    ToolBarNorth newToolBarNorth = new ToolBarNorth();
    ToolBarWest newToolBarWest = new ToolBarWest();
    
    //GridBagLayout erzeugen
    Layout newLayout = new Layout(mainPane,newToolBarNorth.toolbarNorth,
                                  newToolBarWest.toolbarWest,newRegler.regler);
  
    //Container zum Inhaltsbereich des Frames machen
    setContentPane(mainPane);

    //Methodenaufruf zur festlegung des Window Style
    setLookAndFeel();
  }

    public MainFrameListener getMainFrameListener()
    {
        return myMainFrameListener;
    }

  private void setLookAndFeel()
  {
  //Fenster Stil des aktuellen Systems festlegen
    try
    {
      UIManager.setLookAndFeel(
      UIManager.getCrossPlatformLookAndFeelClassName());
      SwingUtilities.updateComponentTreeUI(this);
    }   catch (Exception e) 
    {
      System.err.println("Can´t set look and feel: " + e);
    }
  }
  public void actionPerformed(ActionEvent event)
  {
  String cmd = event.getActionCommand();
       if (cmd.equals("New")) {
          this.setTitle("Test");
       } else if (cmd.equals("Print")) {
          //TO DO
       } else if (cmd.equals("Exit")) {
          setVisible(false);
          dispose();
          System.exit(0);
       } else if (cmd.equals("Info")) {
          //TO DO!!
        }
  }
    
}
 
Ich glaub du hast das hier vergessen, oder !?
Code:
mainPane.add(MenuLeiste);
 
Etwa so:
Code:
MenuLeiste menu = ...
JMenuBar bar = new JMenuBar();
bar.add( menu );
mainFrame.setJMenuBar( bar );

mfg Beni

P.S. Apropos Look And Feel: wenn du das setzt, bevor du irgendwelche Components initialisiert hast, kannst du diesen Zeitfresser SwingUtilities.updateComponentTreeUI(this); weglassen :wink:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben