Hallo,
ich habe ein Programm geschrieben, das wie folgt aussieht:
Nun funktioniert fast alles ganz gut, bis auf eine Sache, die Methode welche fuer das setzen der Layouts fuer die 5 Buttons in einem inneren Panel zustaendig ist, setzt nicht die Layouts in der if-Abfrage nachdem Radiobuttons aktiviert werden, obwohl es ueberprueft und in der Konsole zur Bestaetigung ausgegeben wird, dass der Listener die Befehle der Radiobuttons an die Methode ueber Klassenvariablen weiterleitet.
Wenn Radiobuttons gewaehlt werden, so werden die Werte der zustaendigen Klassenvariablen auf true gesetzt:
Hier die Methode:
Der Listener sieht so aus:
Hat jemand Ahnung warum die Layouts sich nicht setzen lassen, obwohl sie es normalerweise mussten?:bahnhof: Wenn ich selber die Klassenvariablen auf true setze, dann springt das gewuenschte Layout an, aber warum will es so nicht??:bahnhof:
ich habe ein Programm geschrieben, das wie folgt aussieht:
Nun funktioniert fast alles ganz gut, bis auf eine Sache, die Methode welche fuer das setzen der Layouts fuer die 5 Buttons in einem inneren Panel zustaendig ist, setzt nicht die Layouts in der if-Abfrage nachdem Radiobuttons aktiviert werden, obwohl es ueberprueft und in der Konsole zur Bestaetigung ausgegeben wird, dass der Listener die Befehle der Radiobuttons an die Methode ueber Klassenvariablen weiterleitet.
Wenn Radiobuttons gewaehlt werden, so werden die Werte der zustaendigen Klassenvariablen auf true gesetzt:
Java:
//speichern den Wert der Radiobuttons
private boolean a;
private boolean b;
private boolean c;
private boolean d;
Hier die Methode:
Java:
//Die Methode fuer das innere Panel
public JPanel panelInnen(){
JPanel JPanelInnen= new JPanel();
if(a==true){
System.out.println("Ausgabe aus panelInnen(): "+a);
JPanelInnen.setLayout(new GridLayout(0,4));
System.out.println("Panel Layout 1 gesetzt");}
if(b==true){
System.out.println("Ausgabe aus panelInnen(): "+b);
JPanelInnen.setLayout(new GridLayout(0,3));
System.out.println("Panel Layout 2 gesetzt");}
if(c==true){
System.out.println("Ausgabe aus panelInnen(): "+c);
JPanelInnen.setLayout(new GridLayout(0,2));
System.out.println("Panel Layout 3 gesetzt");}
if(d==true){
System.out.println("Ausgabe aus panelInnen(): "+d);
JPanelInnen.setLayout(new GridLayout(0,1));
System.out.println("Panel Layout 4 gesetzt");}
button1 = new JButton(" Schaltflaeche 1 ");
button2 = new JButton(" Schaltflaeche 2 ");
button3 = new JButton(" Schaltflaeche 3 ");
button4 = new JButton(" Schaltflaeche 4 ");
button5 = new JButton(" Schaltflaeche 5 ");
JPanelInnen.add(button1);
JPanelInnen.add(button2);
JPanelInnen.add(button3);
JPanelInnen.add(button4);
JPanelInnen.add(button5);
JPanelInnen.setBorder(new TitledBorder("Layoutpanel"));
return JPanelInnen;
}
Der Listener sieht so aus:
Java:
//Innere Klassse
class InnereKlasse implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//wenn E x i t geklickt, beenden
if (e.getActionCommand().equals("E x i t")) {
System.exit(0); }
//wenn Layout 1 geklickt, a den Wert true zuweisen und Methode panelInnen aufrufen
//damit in der if-Abfrage das richtige Layout gesetzt wird
if (e.getActionCommand().equals("Layout 1")){
a=true;
panelInnen();
System.out.println("a "+a);}//druckt Wert von a aus
else a=false;//wenn nicht zutreffend Wert a auf false setzen
if (e.getActionCommand().equals("Layout 2")){
b=true;
panelInnen();
System.out.println("b "+b);}
else b=false;
if (e.getActionCommand().equals("Layout 3")){
c=true;
panelInnen();
System.out.println("c "+c);}
else c=false;
if (e.getActionCommand().equals("Layout 4")){
d=true;
panelInnen();
System.out.println("d "+d);}
else d=false;
}
}
Hat jemand Ahnung warum die Layouts sich nicht setzen lassen, obwohl sie es normalerweise mussten?:bahnhof: Wenn ich selber die Klassenvariablen auf true setze, dann springt das gewuenschte Layout an, aber warum will es so nicht??:bahnhof: