JMenu und JPanel, Content-Switch

Shooter2k

Erfahrenes Mitglied
Hallo liebes Forum,
ich habe eine einfache Anwendung mit 3 Menüpunkten. Beim drücken der Buttons soll sich der Inhalt neu laden mit (Textfeldern, Buttons etc..), ohne das ein komplett neues Fenster erzeugt wird.

Ich habe dazu ein kleines Beispiel im Netz gefunden, weis aber nicht wie ich es umbauen soll, dass nicht nur die Hintergrundfarbe sich ändert wie im Beispiel hier:

Code:
package Paket;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class FrmChange extends JFrame{

     private JPanel panel1 = new JPanel();
     private JPanel panel2 = new JPanel();
     
     public FrmChange(){
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      initMenu();
       
      panel1.setBackground(Color.BLUE);
      //  System.out.print(panel1);
       
      panel2.setBackground(Color.RED);
      setLayout(new BorderLayout());
     }
     
     private class MenuAction implements ActionListener {
     
      private JPanel panel;
      private MenuAction(JPanel pnl) {
      this.panel = pnl;
      }
      @Override
      public void actionPerformed(ActionEvent e) {
      changePanel(panel);
     
      }
     
     }
     
     private void initMenu() {
      JMenuBar menubar = new JMenuBar();
      JMenu menu = new JMenu("Menu");
      JMenuItem menuItem1 = new JMenuItem("Panel1");
      JMenuItem menuItem2 = new JMenuItem("Panel2");
      menubar.add(menu);
      menu.add(menuItem1);
      menu.add(menuItem2);
      setJMenuBar(menubar);
      menuItem1.addActionListener(new MenuAction(panel1));
      menuItem2.addActionListener(new MenuAction(panel2));
     
     }
     
     private void changePanel(JPanel panel) {
       //System.out.println(panel);
       
      getContentPane().removeAll();
      getContentPane().add(panel, BorderLayout.CENTER);
      getContentPane().doLayout();
      update(getGraphics());
     }
     
     public static void main(String[] args) {
      FrmChange frame = new FrmChange();
      frame.setBounds(200, 200, 300, 200);
      frame.setVisible(true);
     
     }

}

Bei diesem Beispiel ändert sich nur die Hintergrundfarbe. Ich möchte allerdings komplett andere Textfelder und Button je nach Menüpunkt anzeigen lassen.

Kann mir jemand helfen?
Vielen Dank!!

Gruß
 

Fabio Hellmann

Erfahrenes Mitglied
Hallo Shooter2k,

wie in dem Beispiel musst du für deinen Anwendungsfall die beiden Panels (panel1 und panel2) mit den Textfelder, Buttons, etc. bestücken, die du angezeigt haben willst. Das machst du an der Stelle, wo in diesem Beispiel-Code die Hintergrundfarben beider Panels gesetzt werden. ;)

Viele Grüße
Fabio
 

Neue Beiträge