Stefan: Inhalt eines JFrames ändern

Beitrag lesen

Hallo,

in meinem Java Programm, Benutzeroberfläche mit Swing, habe ich oben eine Menüleiste. Wenn ich im Menü oben etwas anklicke soll der Inhalt des ContentPanes geändert werden... Für jeden Menüpunkt habe ich mit einen JPanel Container erstellt und wollte dann je nachdem welcher Menüpunkt geklickt wird diesen an die setContentPane() Methode des JFrames übergeben. Allerdings klappt das nicht! Was mache ich falsch?

Danke für jede Hilfe

Stefan

Hier noch mein Code:

import javax.swing.*;
import java.awt.event.*;

public class FrameMain extends JFrame implements ActionListener
{
 private JPanel Panel1 = new JPanel(null);
 private JPanel Panel2 = new JPanel(null);

private JButton Button1 = new JButton("Button1");
 private JButton Button2 = new JButton("Button2");
 private JButton Button3 = new JButton("Button3");
 private JButton Button4 = new JButton("Button4");

public FrameMain()
 {
  JPanel Panel1 = new JPanel(null);
  JPanel Panel2 = new JPanel(null);

Button1.setBounds(5,5,130,25);
        Button2.setBounds(140,5,130,25);
        Button3.setBounds(5,5,130,25);
        Button4.setBounds(140,5,130,25);

Panel1.add(Button1);
        Panel1.add(Button2);
        Panel2.add(Button3);
        Panel2.add(Button4);

JMenuBar menuBar = new JMenuBar();
        this.setJMenuBar(menuBar);

JMenu JMenu1 = new JMenu("Fahrer");
        menuBar.add(JMenu1);

JMenuItem JMenuItem1 = new JMenuItem("Panel 1 anzeigen");
        JMenuItem JMenuItem2 = new JMenuItem("Panel 2 anzeigen");

JMenuItem1.addActionListener(this);
        JMenuItem2.addActionListener(this);

JMenu1.add(JMenuItem1);
        JMenu1.add(JMenuItem2);

this.setContentPane(Panel1);

}

public static void main(String[] args)
 {
  //Ruft die Klasse FrameMain auf und erstellt das Swing-Fenster
        FrameMain iFrameMain = new FrameMain();

iFrameMain.setTitle("Mitfahrerportal");
        iFrameMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        iFrameMain.setLocation(100,100);
        iFrameMain.setSize(700, 600);
        iFrameMain.setVisible(true);

}

public void actionPerformed(ActionEvent e)
 {
  String cmd = e.getActionCommand();

if (cmd.equals("Panel 1 anzeigen"))
  {
   this.setContentPane(Panel1);
  }

if (cmd.equals("Panel 2 anzeigen"))
  {
   this.setContentPane(Panel2);
  }
 }

}