Interface Layout eines Labels während der Laufzeit ändern

llabusch

Mitglied
Liebe Java-Gemeinde!

Ich soll ein Programm schreiben, dass das Layout eines Labels während der Laufzeit ändern kann, über RadioButtons.

So weit so gut, alles ist ausprogrammiert und alles incl. der Listener funktioniert super gut.

Nur brauche ich jetzt noch die Anweisung, die das Layout ändert, also was schreibe ich nach der If-Abfrage von meinem Listener?

LABELX.setLayout() funktioniert schon mal nicht.....


Liebste Grüße 🙂


Java:
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;



public class LayoutWechselGUI extends JFrame {

	
	private static final long serialVersionUID = 3145868897272762077L;
	
	
	private JRadioButton layout1, layout2, layout3;					//Die Variablen für die Optionsfelder um die Layouts zu wechseln
	private ButtonGroup gruppe;										//Die Variable für die Gruppe in der die Optionsfelder zusammengefasst sind
	private JLabel label1, label2, label3;
	
	
	
	class DerListener implements ItemListener{						//Der Listener als innere Klasse, welcher das Eventmanagement für die RadioButtons übernimmt

		@Override
		public void itemStateChanged(ItemEvent e) {
			
			if(e.getSource() instanceof JRadioButton){				//Prüfen ob das Event von einem der RadioButtons ausgelöst wurde
																	//Weiter wird geprüft, welcher der Buttons gewählt ist und das Layout wird gesetzt
				if(layout1.isSelected() == true){
							
				}
				if(layout2.isSelected() == true){
					
				}
				if(layout3.isSelected() == true){
					
				}
			}
			
			
		}
		
		
	}
	public LayoutWechselGUI(String titel){							//Den Konstruktor anlegen
		super(titel);
		
		JPanel auswahlbereich, layoutaenderung;						//2 Panels vereinbaren
		
		setLayout(new GridLayout(2,0));								//Für das Hauptfenster ein Grid-Layout mit 2 Zeilen erstellen
		
		auswahlbereich = MakeLabel2();								//Die Panels mit den Methoden erzeugen lassen
		layoutaenderung = MakeLabel3();
		
		add(auswahlbereich);										//Die Panels ins Hauptfenster hinzufügen
		add(layoutaenderung);
		
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);				//Die Anwendung schließen lassen beim schließen des Fensters
		
		
		
		DerListener listener = new DerListener();					//Eine Instanz des Listeners erzeugen und die RadioButtons damit verbinden
		layout1.addItemListener(listener);
		layout2.addItemListener(listener);
		layout3.addItemListener(listener);
		
		
		
		setSize(400, 500);											//Die Fenstergröße auf 400x500 setzen
		setVisible(true);											//Das Fenster auch anzeigen
		setResizable(false);										//Größenveränderungen vom User verhindern
	}
	
	
	private JPanel MakeLabel2(){
		
		JPanel tempPanel = new JPanel();							//Ein vorübergehendes Panel erzeugen, das am Ende übergeben wird
		
		gruppe = new ButtonGroup();									//Die Gruppe erzeugen in der die RadioButtons zusammengefasst werden
		
		layout1 = new JRadioButton("Erstes Layout");
		layout2 = new JRadioButton("Zweites Layout");				//Die RadioButtons erstellen
		layout3 = new JRadioButton("Drittes Layout");
		
		gruppe.add(layout1);
		gruppe.add(layout2);										//Die RadioButtons in die Gruppe einfügen
		gruppe.add(layout3);
		
		layout1.setSelected(true);									//Das erste Layout als Standart nach dem Programmstart setzen
		
		tempPanel.add(layout1);
		tempPanel.add(layout2);										//Die RadioButtons in das Panel hinzufügen
		tempPanel.add(layout3);
		
		tempPanel.setLayout(new GridLayout(0,1,10,10));				//Dem Panel ein GridLayout mit einer Spalte geben
		
		tempPanel.setBorder(new TitledBorder("Ein Layout wählen:"));//Einen Rahmen zeichnen 
		
		
		
		
		return tempPanel;
	}
	
	private JPanel MakeLabel3(){
		
		JPanel tempPanel = new JPanel();							//Ein vorübergehendes Panel erzeugen, das am Ende übergeben wird
		
		label1 = new JLabel("Hallo");
		label2 = new JLabel("Sie");									//3 Labels erstellen
		label3 = new JLabel("da");
		
		tempPanel.add(label1);
		tempPanel.add(label2);
		tempPanel.add(label3);
		
		tempPanel.setBorder(new TitledBorder("Ihr gewähltes Layout:"));//Rahmen zeichnen 
		
		return tempPanel;
	}
}
 

Neue Themen


Zurück
Oben