Menübar anklicken und Inhalt entsprechend wechseln

gismo1337

Mitglied
Hallo Zusammen,
ich bin absoluter Neuling - wie so viele wenn sie hier Fragen stellen.

Nach den ersten Kapiteln in Büchern bin ich dabei einfach mal ein bisschen auszuprobieren.
Leider stoppe ich an einer Stelle und komme absolut nicht vorwärts.

Ich habe eine Menübar angelegt und möchte jetzt den Inhalt vom Fenster entsprechend ändern. Aber ich steh wie die Kuh vorm Scheunentor.

Man startet die Anwendung und hat quasi die Hauptseite mit der Menübar.
Jetzt klickt man z.b. auf KalibrierDatenbank --> Anlegen und dann sollte die Seite erscheinen in der ich etwas anlegen kann. Aber es bleibt bei mir auf der Startseite.

Wk5AxpO.png

Java:
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class programm1 {

   private JFrame frmMsan;

   /**
    * Launch the application.
    */
   public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
         public void run() {
            try {
               programm1 window = new programm1();
               window.frmMsan.setVisible(true);
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      });
   }

   /**
    * Create the application.
    */
   public programm1() {
      initialize();
   }

   /**
    * Initialize the contents of the frame.
    */
   private void initialize() {
      frmMsan = new JFrame();
      frmMsan.setTitle("MSAN");
      frmMsan.setBounds(100, 100, 568, 371);
      frmMsan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frmMsan.getContentPane().setLayout(null);
     
      JLabel lblBeschriftungStartseite = new JLabel("Das ist lediglich die Startseite. Wie zum Geier kann ich das Menü anklickbar machen!?");
      lblBeschriftungStartseite.setHorizontalAlignment(SwingConstants.CENTER);
      lblBeschriftungStartseite.setBounds(10, 11, 532, 289);
      frmMsan.getContentPane().add(lblBeschriftungStartseite);
     
      JMenuBar menuBar = new JMenuBar();
      frmMsan.setJMenuBar(menuBar);
     
      JMenu mnKalibrierung = new JMenu("Kalibrier Datenbank");
      menuBar.add(mnKalibrierung);
     
      JMenuItem mntmUebersichtKDB = new JMenuItem("\u00DCbersicht");
      mntmUebersichtKDB.setIcon(new ImageIcon(programm1.class.getResource("/com/sun/java/swing/plaf/windows/icons/ListView.gif")));
      mntmUebersichtKDB.setEnabled(false);
      mnKalibrierung.add(mntmUebersichtKDB);
     
      JMenuItem mntmAnlegenKDB = new JMenuItem("Anlegen");
      mntmAnlegenKDB.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent arg0) {
         }
      });
      mntmAnlegenKDB.setIcon(new ImageIcon(programm1.class.getResource("/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif")));
      mnKalibrierung.add(mntmAnlegenKDB);
     
      JMenuItem mntmBearbeitenKDB = new JMenuItem("Bearbeiten");
      mntmBearbeitenKDB.setIcon(new ImageIcon(programm1.class.getResource("/com/sun/java/swing/plaf/windows/icons/Computer.gif")));
      mntmBearbeitenKDB.setEnabled(false);
      mnKalibrierung.add(mntmBearbeitenKDB);
     
      JMenu mnSchulung = new JMenu("Schulungs Datenbank");
      mnSchulung.setEnabled(false);
      menuBar.add(mnSchulung);
     
      JMenu mnToDo = new JMenu("To Do Liste");
      mnToDo.setEnabled(false);
      menuBar.add(mnToDo);
     
      JMenu mnPlatzhalter = new JMenu("Platzhalter");
      mnPlatzhalter.setEnabled(false);
      menuBar.add(mnPlatzhalter);
   }
}

Ich muss doch sicherlich dem Menüpunkt nur sagen, dass es eine "neue Seite" generieren muss. Aber wie?!

Danke, Basti
 
....Jetzt klickt man z.b. auf KalibrierDatenbank --> Anlegen und dann sollte die Seite erscheinen in der ich etwas anlegen kann. Aber es bleibt bei mir auf der Startseite.
Weil du ihm nicht sagst was gemacht werden soll wenn das MenuItem geklickt wurde 😉

Java:
  JMenuItem mntmAnlegenKDB = new JMenuItem("Anlegen");
      mntmAnlegenKDB.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent arg0) {
         }
      });
Ohne etwas zu programmieren wird das Programm nichts machen

[/QUOTE]Ich muss doch sicherlich dem Menüpunkt nur sagen, dass es eine "neue Seite" generieren muss. Aber wie?![/QUOTE]
Was soll eine "neue Seite" sein? Meinst du ein JPanel?
Ja erzeuge ein neues JPanel Objekt (füge diesem die gewünschten Komponenten hin zu) und füge es dem JFrame hinzu.

Anmerkungen zu deinem Code: Klassennamen werden in UpperCamelCase geschrieben, vermeide das "null"-Layout und beschäftige dich mit den LayoutManagern.
 
Gibt es da noch andere Möglichkeiten, außer dem Ausblenden was ich jetzt mache?
Ist ja irgendwie komisch, wenn ich jetzt für jedes Menü die entsprechenden panels ausblenden muss.
Java:
        JMenuItem mntmAnlegenKDB = new JMenuItem("Anlegen");                // Mausklick auf Menü anlegen Anlegen einblenden, rest ausblenden
        mntmAnlegenKDB.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                anlegen.setVisible(true);
                uebersicht.setVisible(false);
                startseite.setVisible(false);
            }
        });
        mntmAnlegenKDB.setIcon(new ImageIcon(programm1.class.getResource("/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif")));
        mnKalibrierung.add(mntmAnlegenKDB);
 

Zurück
Oben