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
 

Blender3D

Top Contributor
[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]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
J Spielfelder auch über die Tastatureingabe (1…9) ansteuern (Tic Tac Toe) AWT, Swing, JavaFX & SWT 2
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
C JavaFX GUI - Entscheidung über Framework AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
P Listenelemente über Checkbox löschen AWT, Swing, JavaFX & SWT 6
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
K Swing JButton über JLabel AWT, Swing, JavaFX & SWT 6
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
C Java-applikation über Fullscreen AWT, Swing, JavaFX & SWT 4
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
A Swing Gleichmäßige Verteilung der Tabellenzeilen über den gesammten Tabellenbereich AWT, Swing, JavaFX & SWT 5
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
P Swing Componente über Rahmen hinaus zeichnen AWT, Swing, JavaFX & SWT 2
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
B JFrame: Benachrichtung über Größenänderung AWT, Swing, JavaFX & SWT 4
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
R 2D-Grafik Messdiagramm - Diagramm über Zeit AWT, Swing, JavaFX & SWT 5
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
P Swing JPanel über Methode setzen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben