Layout über Radiobuttons ändern

OSchriever

Bekanntes Mitglied
Hi,
ich muss in meinem Programm ein innen liegendes Layout zur Laufzeit verändern, ich habe aber keine Ahnung wie ich das machen soll...
Ich habe ja in der Methode panelLayoutErzeugen() ein GridLayout(0,1,10,10) gesetzt. Mit den Radiobuttons möchte ich das Layout auf (0,1,50,50) und (0,1,100,100) verändern. Das habe ich über den Listener versucht, klappt aber nicht. Gibt keine Fehlermeldung, es passiert einfach nichts, außer dass sich der Text ändert, wenn ich auf den mittleren Button und dann auf anwenden klicke. Danach kann ich den Text mit dem Programm auch nicht mehr ändern.
Hier der Code:

Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;

public class LayoutVeraendernGUI extends JFrame{

    private static final long serialVersionUID = 3006212012028893840L;
   
    //drei RadioButtons zum Verändern des Layouts
    private JRadioButton klein, mittel, gross;
    //zwei Schaltflächen
    private JButton schaltflaecheAnwenden, schaltflaecheBeenden;
    //ein Label für die Anzeige, welches Layout aktiv ist
    private JLabel layout;
   
    //die innere Klasse für die Ereignisverarbeitung
    class MeinListener implements ActionListener {
       
        @Override
        public void actionPerformed(ActionEvent e) {
            //wurde auf Beenden geklickt?
            //dann das Programm beenden
            if (e.getActionCommand().equals("ende"))
                System.exit(0);
            //wurde Anwenden geklickt? Text und Layout ändern
            if (e.getActionCommand().equals("anwenden"))
                if (klein.isSelected()) {
                    layout.setText("kleine Layout");
               
                    }
                if (mittel.isSelected()) {
                    layout.setText("mittlere Layout");
                    panelLayoutErzeugen().setLayout(new GridLayout(0, 1, 50, 50));
                   
                   
                    }
                if (gross.isSelected()) {
                    layout.setText("große Layout");
                    }
               
               
        }
    }
   
    //der Konstruktor
    public LayoutVeraendernGUI(String titel) {
       
        super(titel);
       
        //insgesamt vier Panels
        JPanel panelEinAus, panelAuswahl, panelButtons, gross;
       
        //die Panels über die Methoden erstellen
        panelEinAus = panelLayoutErzeugen();
        panelAuswahl = panelAuswahlErzeugen();
        panelButtons = panelButtonErzeugen();
       
        //das Border-Layout benutzen
        //es ist Standard und muss nicht gesetzt werden
       
        //die Panels hinzufügen
        //die beiden größeren Panel fassen wir noch einmal zusammen
        gross = new JPanel();
        gross.add(panelEinAus);
        gross.add(panelAuswahl);
       
        //die beiden kommen in die Mitte
        add(gross,BorderLayout.CENTER);
        //das Panel mit den Buttons nach rechts
        add(panelButtons, BorderLayout.EAST);

        //die Standard-Aktion setzen
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        //packen und anzeigen
        pack();
        setVisible(true);
       
    }

    //die Methode erzeugt das Panel für das Layout
    //und liefert es zurück
    private JPanel panelLayoutErzeugen() {
        JPanel tempPanel = new JPanel();
       
        layout = new JLabel("kleine Layout", SwingConstants.CENTER);
       
        //das Panel bekommt ein GridLaoyut mit zwei Spalten und etwas Abstand
        tempPanel.setLayout(new GridLayout(0, 1, 10, 10));
        //Label für den ersten Text
        tempPanel.add(new JLabel("Sie haben das ", SwingConstants.CENTER));
       
        //Label für den veränderbaren Text
        tempPanel.add(layout);
       
        //Label für den dritten Text
        tempPanel.add(new JLabel(" gewählt!", SwingConstants.CENTER));
       
        //einen Rahmen um das Panel ziehen
        tempPanel.setBorder(new TitledBorder("Layout"));
       
        //das Panel zurückliefern
        return tempPanel;
    }
   
   
   
    //Das Panel mit den AuswahlButtons
    private JPanel panelAuswahlErzeugen() {
        JPanel tempPanel = new JPanel();
        //es enthält die Gruppe mit den Optionsfeldern
        klein = new JRadioButton("kleines Layout");
        mittel = new JRadioButton("mittleres Layout");
        gross = new JRadioButton("großes Layout");
       
        ButtonGroup gruppe = new ButtonGroup();
        gruppe.add(klein);
        gruppe.add(mittel);
        gruppe.add(gross);
       
       
        //klein ist ausgewählt
        klein.setSelected(true);
       
        //das Panel bekommt ein GridLaoyut mit 1 Spalte
        tempPanel.setLayout(new GridLayout(0, 1));
        tempPanel.add(klein);
        tempPanel.add(mittel);
        tempPanel.add(gross);
       
        //und einen Rahmen
        tempPanel.setBorder(new TitledBorder("Layout auswählen: "));

        //das Panel zurückliefern
        return tempPanel;
    }
   
    //die Methode erzeugt das Panel für die Schaltflächen
    //und liefert es zurück
    private JPanel panelButtonErzeugen() {
        JPanel tempPanel = new JPanel();

        schaltflaecheBeenden = new JButton(" Beenden ");
        //das Aktion-Command setzen
        schaltflaecheBeenden.setActionCommand("ende");
        schaltflaecheAnwenden = new JButton("Anwenden");
        schaltflaecheAnwenden.setActionCommand("anwenden");
       
        //Zwischenpanel für die Schaltflächen
        //ebenfalls ein GridLayout
        tempPanel.setLayout(new GridLayout(0, 1));
        tempPanel.add(schaltflaecheAnwenden);
        //ein leeres Label einfügen
        tempPanel.add(new JLabel());
        tempPanel.add(schaltflaecheBeenden);
       
        //die Schaltflächen mit dem Listener verbinden
        MeinListener listener = new MeinListener();
        schaltflaecheBeenden.addActionListener(listener);
        schaltflaecheAnwenden.addActionListener(listener);
       
        //das Panel zurückliefern
        return tempPanel;
    }
   
   
   
   
   
}
Kann mir jemand helfen?
 

mihe7

Top Contributor
Naja, Du fügst ja das Panel ursprünglich mit add zum JFrame (bzw. dessen Content Pane) hinzu. Dem entsprechend musst Du
a) das alte Panel mit remove aus dem JFrame entfernen
b) das neue Panel mit add zum JFrame hinzufügen
c) den JFrame mittels revalidate neu validieren
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
J LayoutManager Layout über JRadiobutton Wechseln AWT, Swing, JavaFX & SWT 6
S Swing JPanel über gesamte Fensterbreite. "flüssiges" Layout AWT, Swing, JavaFX & SWT 9
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
A Ungewollte Layout änderungen AWT, Swing, JavaFX & SWT 3
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
N Swing Layout positionieren AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben