X
XsE75ab486456
Gast
Hallo
Leider habe ich über Google nichts passendes gefunden deswegen stelle ich hier meine Frage:
Gibt es eine "elegantere" Möglichkeit zwischen 2 JPanels zu wechseln.
Ich kenne eine Möglichkeit bin aber überzeugt dass es eine bessere gibt.
meine funktioniert wie folgt:
ich füge beide Panels dem Layout hinzu setze beide mit setVisible auf false.
wenn ich das jeweilige Panel anzeigen will setze ich es mit setVisible auf true und füge es dem getContentPane() nocheinmal hinzu.
Leider habe ich über Google nichts passendes gefunden deswegen stelle ich hier meine Frage:
Gibt es eine "elegantere" Möglichkeit zwischen 2 JPanels zu wechseln.
Ich kenne eine Möglichkeit bin aber überzeugt dass es eine bessere gibt.
meine funktioniert wie folgt:
ich füge beide Panels dem Layout hinzu setze beide mit setVisible auf false.
wenn ich das jeweilige Panel anzeigen will setze ich es mit setVisible auf true und füge es dem getContentPane() nocheinmal hinzu.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main
{
public static void main(String[] args)
{
Window window = new Window();
}
public static class Window extends JFrame implements ActionListener
{
JRadioButton rbRed = new JRadioButton("ROT");
JRadioButton rbBlue = new JRadioButton("BLAU");
JPanel panelRed = new JPanel();
JPanel panelBlue = new JPanel();
public Window()
{
panelRed.setBackground(Color.RED);
panelBlue.setBackground(Color.BLUE);
panelRed.setPreferredSize(new Dimension(180, 200));
panelBlue.setPreferredSize(new Dimension(180, 200));
rbRed.addActionListener(this);
rbBlue.addActionListener(this);
SetLayout();
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource().equals(rbRed))
{
rbBlue.setSelected(false);
panelBlue.setVisible(false);
panelRed.setVisible(true);
this.add(panelRed, BorderLayout.CENTER);
}
if (e.getSource().equals(rbBlue))
{
rbRed.setSelected(false);
panelRed.setVisible(false);
panelBlue.setVisible(true);
this.add(panelBlue, BorderLayout.CENTER);
}
}
private void SetLayout()
{
JPanel panelTop = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
panelTop.add(rbRed);
panelTop.add(rbBlue);
this.add(panelTop, BorderLayout.NORTH);
panelRed.setVisible(false);
this.add(panelRed, BorderLayout.CENTER);
panelBlue.setVisible(false);
this.add(panelBlue, BorderLayout.CENTER);
this.setVisible(true);
this.setSize(200, 400);
}
}
}