Layoutwechsel über RadioButtons

Albi_2020

Mitglied
Hallo liebe java-gemeinde,

ich habe versucht ein Programm zu erstellen, bei dem das innenliegende Panel über Radiobuttons geändert werden kann. Das kann zum Einen über einen Button erfolgen (das funktioniert). Aktuell ist es so programmiert, dass die Buttons das Layout automatisch wechseln. Allerdings funktioniert es nur bei den ersten drei RadioButtons. Die letzten beiden bleiben ohne Funktion...leider weiß ich aber nicht warum.

Java:
import java.awt.BorderLayout;
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.JTextField;
import javax.swing.border.TitledBorder;

public class WechselGUI extends JFrame {
    
    private JTextField eingabe1, eingabe2, eingabe3;
    private JLabel ausgabe1, ausgabe2, ausgabe3;
    
    private ButtonGroup gruppe;
    private JRadioButton layout1, layout2, layout3, layout4, layout5;
    
    private JButton schaltflaecheLayout, schaltflaecheBeenden;
    
        
    class MeinListener implements ActionListener, ItemListener {
        
        private JPanel panelInnen;
        
        public MeinListener(JPanel panelInnen){
            this.panelInnen = panelInnen;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            
            if (e.getActionCommand().equals("layout-wechsel")) {
                
                if (layout1.isSelected()) {
                    panelInnen.setVisible(false);
                    panelInnen.setLayout(new GridLayout(0,2));
                    panelInnen.setVisible(true);
                }
                if (layout2.isSelected()) {
                    panelInnen.setVisible(false);
                    panelInnen.setLayout(new GridLayout(0,3));
                    panelInnen.setVisible(true);
                }
                if (layout3.isSelected()) {
                    panelInnen.setVisible(false);
                    panelInnen.setLayout(new GridLayout(0,4));
                    panelInnen.setVisible(true);
                }
                if (layout4.isSelected()) {
                    panelInnen.setVisible(false);
                    panelInnen.setLayout(new GridLayout(0,5));
                    panelInnen.setVisible(true);
                }
                if (layout5.isSelected()) {
                    panelInnen.setVisible(false);
                    panelInnen.setLayout(new GridLayout(0,6));
                    panelInnen.setVisible(true);
                }
                
            }   
            
            if (e.getActionCommand().equals("beenden")) {
                System.exit(0);
            }
        }

        @Override
        public void itemStateChanged(ItemEvent e) {
            
            Object ausloeser = e.getSource();
            
            if (ausloeser instanceof JRadioButton) {
                
              if (layout1.isSelected() == true) {
                  panelInnen.setVisible(false);
                  panelInnen.setLayout(new GridLayout(0,2));
                  panelInnen.setVisible(true);
              }
              if (layout2.isSelected() == true) {
                  panelInnen.setVisible(false);
                  panelInnen.setLayout(new GridLayout(0,3));
                  panelInnen.setVisible(true);
              }
              if (layout3.isSelected() == true) {
                  panelInnen.setVisible(false);
                  panelInnen.setLayout(new GridLayout(0,4));
                  panelInnen.setVisible(true);
              }
              if (layout4.isSelected() == true) {
                  panelInnen.setVisible(false);
                  panelInnen.setLayout(new GridLayout(0,5));
                  panelInnen.setVisible(true);
              }
              if (layout5.isSelected() == true) {
                  panelInnen.setVisible(false);
                  panelInnen.setLayout(new GridLayout(0,6));
                  panelInnen.setVisible(true);
              }
            }
            
        }
      }
        
    
    public WechselGUI(String text) {
        super(text);
        
        JPanel panelInnen, panelRadioButton, panelSchaltflaeche;
        
        panelSchaltflaeche = panelSchaltflaecheErzeugen();
        panelInnen = panelInnenErzeugen();
        panelRadioButton = panelRadioButtonErzeugen();
        
        add(panelRadioButton, BorderLayout.NORTH);
        add(panelInnen, BorderLayout.CENTER);
        add(panelSchaltflaeche, BorderLayout.SOUTH);
        
        MeinListener listener = new MeinListener(panelInnen);
        schaltflaecheBeenden.addActionListener(listener);
        schaltflaecheLayout.addActionListener(listener);
        layout1.addItemListener(listener);
        layout2.addItemListener(listener);
        layout3.addItemListener(listener);
        
                
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        pack();
        setVisible(true);
        
        setResizable(false);
        
    }
        
        
    
    private JPanel panelRadioButtonErzeugen() {
        JPanel tempPanel = new JPanel();
            
            layout1 = new JRadioButton("Layout A");
            layout2 = new JRadioButton("Layout B");
            layout3 = new JRadioButton("Layout C");
            layout4 = new JRadioButton("Layout D");
            layout5 = new JRadioButton("Layout E");
                        
            ButtonGroup gruppe = new ButtonGroup();
            gruppe.add(layout1);
            gruppe.add(layout2);
            gruppe.add(layout3);
            gruppe.add(layout4);
            gruppe.add(layout5);
                                    
            layout1.setSelected(true);
            
            tempPanel.setLayout(new GridLayout(0,3));
            tempPanel.add(layout1);
            tempPanel.add(layout2);
            tempPanel.add(layout3);
            tempPanel.add(layout4);
            tempPanel.add(layout5);
                                    
            tempPanel.setBorder(new TitledBorder("Layout-Auswahl"));
            
            return tempPanel;
        }
        
        
    
    
    private JPanel panelInnenErzeugen() {
        JPanel tempPanel = new JPanel();
            
            eingabe1 = new JTextField(10);
            eingabe2 = new JTextField(10);
            eingabe3 = new JTextField(10);
            ausgabe1 = new JLabel("Text1");
            ausgabe2 = new JLabel("Text2");
            ausgabe3 = new JLabel("Text3");
            
            tempPanel.setLayout(new GridLayout(0,2));
            tempPanel.add(ausgabe1);
            tempPanel.add(eingabe1);
            tempPanel.add(ausgabe2);
            tempPanel.add(eingabe2);
            tempPanel.add(ausgabe3);
            tempPanel.add(eingabe3);
            
            tempPanel.setBorder(new TitledBorder("Inneres Layout"));
            
            return tempPanel;
    }
    
    
    private JPanel panelSchaltflaecheErzeugen() {
        JPanel tempPanel = new JPanel();

        schaltflaecheBeenden = new JButton(" Beenden ");
        schaltflaecheBeenden.setActionCommand("beenden");
        schaltflaecheLayout = new JButton("Layout-Wechsel");
        schaltflaecheLayout.setActionCommand("layout-wechsel");
            
        tempPanel.setLayout(new GridLayout(0,1));
        tempPanel.add(schaltflaecheLayout);
        tempPanel.add(schaltflaecheBeenden);
        
        tempPanel.setBorder(new TitledBorder("Schaltfläche"));
            
        return tempPanel;
    }


    public static void main(String[] args) {
        new WechselGUI("Layout");
    }
}


LG Sebastian
 
[CODE lang="java" title="Code"]import java.awt.BorderLayout;
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.JTextField;
import javax.swing.border.TitledBorder;

@SuppressWarnings("serial")
public class WechselGUI extends JFrame {

private final static int NUM_LAYOUT = 5;
private final static int NUM_INPUT = 3;
private JTextField[] input = new JTextField[NUM_INPUT];
private JLabel[] output = new JLabel[input.length];

private final static int TYP_A = 0;
private final static int TYP_B = 1;
private final static int TYP_C = 2;
private final static int TYP_D = 3;
private final static int TYP_E = 4;

private JRadioButton[] layout = new JRadioButton[NUM_LAYOUT];
private JButton schaltflaecheLayout, schaltflaecheBeenden;

class MeinListener implements ActionListener, ItemListener {
private JPanel panelInnen;

public MeinListener(JPanel panelInnen) {
this.panelInnen = panelInnen;
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("layout-wechsel"))
updateLayout();
if (e.getActionCommand().equals("beenden"))
System.exit(0);
}

public void changeLayout(int rows, int cols) {
panelInnen.setVisible(false);
panelInnen.setLayout(new GridLayout(rows, cols));
panelInnen.setVisible(true);
}

@Override
public void itemStateChanged(ItemEvent e) {
if (e.getSource() instanceof JRadioButton)
updateLayout();
}

public void updateLayout() {
if (layout[TYP_A].isSelected())
changeLayout(0, 2);
if (layout[TYP_B].isSelected())
changeLayout(0, 3);
if (layout[TYP_C].isSelected())
changeLayout(0, 4);
if (layout[TYP_D].isSelected())
changeLayout(0, 5);
if (layout[TYP_E].isSelected())
changeLayout(0, 6);
}

}

public WechselGUI(String text) {
super(text);
JPanel panelSchaltflaeche = panelSchaltflaecheErzeugen();
JPanel panelInnen = panelInnenErzeugen();
JPanel panelRadioButton = panelRadioButtonErzeugen();

add(panelRadioButton, BorderLayout.NORTH);
add(panelInnen, BorderLayout.CENTER);
add(panelSchaltflaeche, BorderLayout.SOUTH);

MeinListener listener = new MeinListener(panelInnen);
schaltflaecheBeenden.addActionListener(listener);
schaltflaecheLayout.addActionListener(listener);
for (int i = 0; i < layout.length; i++)
layout.addItemListener(listener);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
setResizable(false);
}

private JPanel panelRadioButtonErzeugen() {
JPanel tempPanel = new JPanel();
ButtonGroup gruppe = new ButtonGroup();

for (int i = 0; i < NUM_LAYOUT; i++) {
layout = new JRadioButton("Layout " + (char) ('A' + i));
gruppe.add(layout);
tempPanel.add(layout);
}

layout[TYP_A].setSelected(true);
tempPanel.setLayout(new GridLayout(0, 3));
tempPanel.setBorder(new TitledBorder("Layout-Auswahl"));
return tempPanel;
}

private JPanel panelInnenErzeugen() {
JPanel tempPanel = new JPanel();

for (int i = 0; i < input.length; i++) {
input = new JTextField(10);
output = new JLabel("Text" + (char) ('1' + i));
output.setHorizontalAlignment(JLabel.CENTER);
tempPanel.add(input);
tempPanel.add(output);
}
tempPanel.setLayout(new GridLayout(0, 2));
tempPanel.setBorder(new TitledBorder("Inneres Layout"));
return tempPanel;
}

private JPanel panelSchaltflaecheErzeugen() {
JPanel tempPanel = new JPanel();
schaltflaecheBeenden = new JButton(" Beenden ");
schaltflaecheBeenden.setActionCommand("beenden");
schaltflaecheLayout = new JButton("Layout-Wechsel");
schaltflaecheLayout.setActionCommand("layout-wechsel");
tempPanel.setLayout(new GridLayout(0, 1));
tempPanel.add(schaltflaecheLayout);
tempPanel.add(schaltflaecheBeenden);
tempPanel.setBorder(new TitledBorder("Schaltfläche"));
return tempPanel;
}

public static void main(String[] args) {
new WechselGUI("Layout");
}
}[/CODE]
 

Zurück
Oben