Hey zusammen,
ich habe folgenden Aufgabenstellung:
Erstellen Sie eine Anwendung, bei der zur Laufzeit zwischen den Layouts für ein innen liegendes Panel gewechselt werden kann. In diesem Panel sollen sich mindestens drei Labels oder ähnliche Komponenten befinden.
Bieten Sie dem Anwender dabei mindestens drei verschiedene Layouts über eine Gruppe mit Optionsfeldern an. Welche Layouts Sie genau verwenden, ist Ihnen freigestellt. Sie können zum Beispiel auch GridLayouts mit unterschiedlicher Spaltenzahl benutzen.
Sobald der Anwender ein anderes Layout auswählt, sollen die Änderungen sofort sichtbar werden. Bitte beachten Sie dabei, dass sich ausschließlich das Layout für das innen liegende Panel ändern soll. Das Layout der Anwendung an sich soll unverändert bleiben.
Nun dachte ich eigentlich ich hätte die Lösung und wäre fertig, jedoch beim Testen hab ich schnell gemerkt das funktioniert nicht so wie ich das möchte.
Das Fenster sieht so aus wie ich es mir vorgestellt habe, jedoch wenn ich auf einen Button zum Wechseln des Layouts klicke, verändert es sich zwar, aber auch nicht so wie ich es eingestellt habe, und klicke ich anschließend wieder auf einen anderen Button passiert nichts mehr.
Wo steckt der Fehler??
So sieht das Fenster aktuell aus:

Hier mein Code:
ich habe folgenden Aufgabenstellung:
Erstellen Sie eine Anwendung, bei der zur Laufzeit zwischen den Layouts für ein innen liegendes Panel gewechselt werden kann. In diesem Panel sollen sich mindestens drei Labels oder ähnliche Komponenten befinden.
Bieten Sie dem Anwender dabei mindestens drei verschiedene Layouts über eine Gruppe mit Optionsfeldern an. Welche Layouts Sie genau verwenden, ist Ihnen freigestellt. Sie können zum Beispiel auch GridLayouts mit unterschiedlicher Spaltenzahl benutzen.
Sobald der Anwender ein anderes Layout auswählt, sollen die Änderungen sofort sichtbar werden. Bitte beachten Sie dabei, dass sich ausschließlich das Layout für das innen liegende Panel ändern soll. Das Layout der Anwendung an sich soll unverändert bleiben.
Nun dachte ich eigentlich ich hätte die Lösung und wäre fertig, jedoch beim Testen hab ich schnell gemerkt das funktioniert nicht so wie ich das möchte.
Das Fenster sieht so aus wie ich es mir vorgestellt habe, jedoch wenn ich auf einen Button zum Wechseln des Layouts klicke, verändert es sich zwar, aber auch nicht so wie ich es eingestellt habe, und klicke ich anschließend wieder auf einen anderen Button passiert nichts mehr.
Wo steckt der Fehler??
So sieht das Fenster aktuell aus:

Hier mein Code:
Java:
package einsendeaufgabe10;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;
public class LayoutWechsler extends JFrame {
private JButton schaltflaecheBeenden;
private JRadioButton layout1, layout2, layout3;
private JLabel ausgabe1, ausgabe2, ausgabe3;
private ButtonGroup gruppe;
private JPanel panelLayouts, panelButtonBeenden, panelVeränderbar;
class MeinListener implements ActionListener, ItemListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Beenden"))
System.exit(0);
}
@Override
public void itemStateChanged(ItemEvent e) {
if (layout1.isSelected() == true)
panelVeränderbar.setVisible(false);
panelVeränderbar.setLayout(new FlowLayout());
panelVeränderbar.setVisible(true);
if (layout2.isSelected() == true)
panelVeränderbar.setVisible(false);
panelVeränderbar.setLayout(new GridLayout(3,0));
panelVeränderbar.setVisible(true);
if (layout3.isSelected() == true)
panelVeränderbar.setVisible(false);
panelVeränderbar.setLayout(new GridLayout(0,3));
panelVeränderbar.setVisible(true);
}
}
public LayoutWechsler(String titel) {
super(titel);
// eine Gruppe für die RadioButtons erstellen
gruppe = new ButtonGroup();
// Die Buttons für die verschiedenen Layouts erzeugen
layout1 = new JRadioButton("1");
layout2 = new JRadioButton("2");
layout3 = new JRadioButton("3");
// das erste Layout als Starteinstellung
layout1.setSelected(true);
// die Buttons zur Gruppe hinzufügen
gruppe.add(layout1);
gruppe.add(layout2);
gruppe.add(layout3);
// ein neues Panel erstellen und die RadioButtons hinzufügen
panelLayouts = new JPanel();
panelLayouts.add(layout1);
panelLayouts.add(layout2);
panelLayouts.add(layout3);
// einen Rahmen mit Titel für das Panel erstellen
panelLayouts.setBorder(new TitledBorder("Wähle ein Layout:"));
// die Schaltfläche Beenden erstellen und einem Panel hinzufügen
schaltflaecheBeenden = new JButton ("Beenden");
panelButtonBeenden = new JPanel();
panelButtonBeenden.add(schaltflaecheBeenden);
// Labels erstellen
ausgabe1 = new JLabel("Spielerei");
ausgabe2 = new JLabel("mit verschiedenen");
ausgabe3 = new JLabel("Layouts");
// Panel für die Labels erstellen
panelVeränderbar = new JPanel();
// die Labels dem Panel hinzufügen
panelVeränderbar.add(ausgabe1);
panelVeränderbar.add(ausgabe2);
panelVeränderbar.add(ausgabe3);
panelVeränderbar.setBorder(new TitledBorder("Layout-Veränderung"));
// ein Layout für den äußeren Container erstellen
setLayout(new GridLayout(0,2,20,20));
add(panelLayouts);
add(panelVeränderbar);
add(panelButtonBeenden);
setResizable(false);
// Listener erstellen und verbinden
MeinListener listener = new MeinListener();
schaltflaecheBeenden.addActionListener(listener);
layout1.addItemListener(listener);
layout2.addItemListener(listener);
layout3.addItemListener(listener);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//das Fenster packen und anzeigen
pack();
setVisible(true);
}
}