Hallo Liebe Boardgemeinde,
ich versuche folgende Aufgabe zu lösen: Ein innen liegendes Panel, soll durch Radiobutton die in einem äußeren Panel liegen verändert werden. Die Layoutanpassungen sollen sich also nur auf das innere Panel auswirken. Mein bisheriger Code, sieht wie folgt aus:
allerdings wird bei Auswahl der Radiobutton das Layout nicht wie gewünscht angepasst. Ich habe den ActionListener im Verdacht, kann den Fehler aber nicht finden
... kann mir jemand die Tomaten von den Augen nehmen??
vielen Dank und viele Grüße
ich versuche folgende Aufgabe zu lösen: Ein innen liegendes Panel, soll durch Radiobutton die in einem äußeren Panel liegen verändert werden. Die Layoutanpassungen sollen sich also nur auf das innere Panel auswirken. Mein bisheriger Code, sieht wie folgt aus:
Java:
package de.eiligerwind.Einsendeaufgabe2;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
public class LayoutChangerGUI extends JFrame {
//Von Eclipse automatisch vergebene Seriennummer
private static final long serialVersionUID = 1L;
//Die Komponenten drei Panels, Optionsfelder, Gruppe für die Optionsfelder, drei Labels, Button
private JPanel panelRadiobuttons, panelLabelAnzeige, schaltflaechebeenden;
private JRadioButton grid1, grid2, grid3;
private ButtonGroup gruppeLayout;
private JLabel erstesLabel, zweitesLabel, drittesLabel;
private JButton beenden;
//der Konstruktor
public LayoutChangerGUI (String titel) {
super(titel);
//insgesamt drei Panels
panelRadiobuttons = new JPanel();
grid1 = new JRadioButton("Eine Spalte");
grid2 = new JRadioButton("Zwei Spalten");
grid3 = new JRadioButton("Drei Spalten");
panelRadiobuttons.add(grid1);
panelRadiobuttons.add(grid2);
panelRadiobuttons.add(grid3);
gruppeLayout = new ButtonGroup();
grid1.setSelected(true);
gruppeLayout.add(grid1);
gruppeLayout.add(grid2);
gruppeLayout.add(grid3);
panelRadiobuttons.setBorder(new TitledBorder("Das Layout ändern :"));
//grid1.setSelected(true);
panelLabelAnzeige = new JPanel();
erstesLabel = new JLabel("Erstes Label");
zweitesLabel = new JLabel("Zweites Label");
drittesLabel = new JLabel("Drittes Label");
erstesLabel.setBorder(new BevelBorder (BevelBorder.LOWERED));
zweitesLabel.setBorder(new BevelBorder (BevelBorder.LOWERED));
drittesLabel.setBorder(new BevelBorder (BevelBorder.LOWERED));
panelLabelAnzeige.add(erstesLabel);
panelLabelAnzeige.add(zweitesLabel);
panelLabelAnzeige.add(drittesLabel);
panelLabelAnzeige.setBorder(new TitledBorder("Label 1-3"));
//ein Gridlayout mit einer Spalte und etwas Abstand
//das Layout gilt jetzt nur für den "äußeren" Container
setLayout(new GridLayout(0, 1, 10, 10));
add(panelRadiobuttons);
add(panelLabelAnzeige);
beenden = new JButton("Beenden");
//daneben das zweite Panel
schaltflaechebeenden = new JPanel();
schaltflaechebeenden.add(beenden);
schaltflaechebeenden.setBorder(new TitledBorder("Anwendung schließen"));
//die Panels für die Schaltflächen einfügen
add(schaltflaechebeenden);
//für die RadioButtons muss das für jeden Button passieren, nicht für die Gruppe!
MeinListener listener= new MeinListener(panelLabelAnzeige);
beenden.addActionListener(listener);
grid1.addActionListener(listener);
grid2.addActionListener(listener);
grid3.addActionListener(listener);
//die Standard-Aktion setzen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//packen und anzeigen
pack();
setVisible(true);
//Größenänderungen sind nicht zugelassen
//damit das mühsam erstellte Layout nicht durcheinander kommt
setResizable(false);
}
//Innere Klasse für den Listener
class MeinListener implements ActionListener {
private JPanel panelLabelAnzeige;
public MeinListener(JPanel panelLabelAnzeige){
this.panelLabelAnzeige = panelLabelAnzeige;
}
@Override
public void actionPerformed(ActionEvent e) {
//wurde auf Beenden geklickt?
//dann das Programm beenden
if(grid1.isSelected()==true); {
panelLabelAnzeige.setVisible(false);
panelLabelAnzeige.setLayout(new GridLayout(3,1));
panelLabelAnzeige.setVisible(true);
}
if(grid2.isSelected()==true); {
panelLabelAnzeige.setVisible(false);
panelLabelAnzeige.setLayout(new GridLayout(1,2));
panelLabelAnzeige.setVisible(true);
panelLabelAnzeige.repaint();
}
if(grid3.isSelected()==true); {
panelLabelAnzeige.setVisible(false);
panelLabelAnzeige.setLayout(new GridLayout(1,3));
panelLabelAnzeige.setVisible(true);
panelLabelAnzeige.repaint();
}
if (e.getActionCommand().equals("Beenden")){
System.exit(0);
}
}
}
}
allerdings wird bei Auswahl der Radiobutton das Layout nicht wie gewünscht angepasst. Ich habe den ActionListener im Verdacht, kann den Fehler aber nicht finden
vielen Dank und viele Grüße