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
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;
}
}