Methode setzt nicht das Layout in einer if-Abfrage

bandy

Bekanntes Mitglied
Hallo,
ich habe ein Programm geschrieben, das wie folgt aussieht:

RL.JPG

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:
 

bandy

Bekanntes Mitglied
Und als Bestaetigung, dass if-Abfrage greift, erscheint in der Konsole folgendes:
Code:
Ausgabe aus panelInnen(): true
Panel Layout 1 gesetzt
a true

Aber Layout bleibt wie es war:oops:
 

jgh

Top Contributor
probiere doch mal einen repaint-, validate-Aufruf, auf deinJPanelInnen.
also am ende der panelInnen-Methode:

Java:
JPanelInnen.validate();
JPanelInnen.repaint();
// UND IRGENDWANN WERDE ICH MEINE VARIABLEN_NAMEN KLEIN SCHREIBEN :)
 

bandy

Bekanntes Mitglied
probiere doch mal einen repaint-, validate-Aufruf, auf deinJPanelInnen.
also am ende der panelInnen-Methode:

Java:
JPanelInnen.validate();
JPanelInnen.repaint();
// UND IRGENDWANN WERDE ICH MEINE VARIABLEN_NAMEN KLEIN SCHREIBEN :)

Habe ich probiert, hilft nicht weiter. Zeigt keine Wirkung.:shock: Ich vermute, dass der Wiederaufruf der Methode panelInnen() im Listener nicht ausreichend ist, muss wohl auch der Konstruktor gleich neu aufgerufen werden, aber im Listener kennt ihn niemand:rtfm::shock::shock:
 

jgh

Top Contributor
natürlich langt das nicht aus, wenn du sonst nichts machst?

du musst natürlich dem Parent (JFrame?) von JPanelInnen das neue JPanel adden, sonst erzeugst du ein neues JPanel und nichts weiter ;)
 

bandy

Bekanntes Mitglied
Wenn ich dich richtig verstehe meinst du das so:

Java:
//Die Methode fuer das innere Panel
	public JPanel panelInnen(){
		
		JPanel JPanelInnen= new JPanel();  // <=== dies ist neu
			
		
		if(a==true){ 
			JPanelInnen.add( new JPanel());
			
			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;
	}

Aber funktioniert auch nicht:shock:
 

jgh

Top Contributor
Irgendwo im Code musst du doch sowas in der Art stehen haben:

Java:
mainFrame.add(JPanelInnen, BorderLayout.Center);
//oder
mainPanel.add(JPanelInnen, BorderLayout.Center);

das musst du halt nochmal aufrufen, mit dem neuen Panel, dass dir deine Methode panelInnen zurückgibt!
 

bandy

Bekanntes Mitglied
Irgendwo im Code musst du doch sowas in der Art stehen haben:

Java:
mainFrame.add(JPanelInnen, BorderLayout.Center);
//oder
mainPanel.add(JPanelInnen, BorderLayout.Center);

das musst du halt nochmal aufrufen, mit dem neuen Panel, dass dir deine Methode panelInnen zurückgibt!

Richtig, so etwas habe ich im Konstruktor stehen:

Java:
   add(panelInnen, BorderLayout.CENTER);


Das habe ich auch versucht, den Konstruktor gleich mit aufzurufen, aber gelungen ist mir das nicht:oops:

Nun wenn ich diese Zeile einzeln in die Methode panelInnen() aufnehme, dann aendert das schon Layouts, aber nicht so wie es sein sollte.

Hier noch mal der ganze Quelltext:

Java:
package anwendung;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;


public class Anwendung extends JFrame{
		
	private static final long serialVersionUID = 1L;
	
	
	private JRadioButton layout1, layout2, layout3, layout4 ;
	//Button fuer das Enden des Programms
	private JButton buttonExit;
	//5 Buttons fuer das innere Panel
	public JButton button1, button2, button3, button4, button5;
	private ButtonGroup gruppe;
	
	//speichern den Wert der Radiobuttons
	public boolean a;
	private boolean b;
	private boolean c;
	private boolean d;
	
	//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();
					panelInnen().validate();
					

			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;
		}
			
	}
	
	
			
	
	
	
	//Die Methode fuer das innere Panel
	public JPanel panelInnen(){
		
		JPanel JPanelInnen= new JPanel();
		
		
		if(a==true){ add(JPanelInnen, BorderLayout.CENTER);
			
			
			System.out.println("Ausgabe aus panelInnen(): "+a);	
			JPanelInnen.setLayout(new GridLayout(0,4)); 
			System.out.println("Panel Layout 1 gesetzt");}
		


		if(b==true){ add(JPanelInnen, BorderLayout.CENTER);
			System.out.println("Ausgabe aus panelInnen(): "+b);
			JPanelInnen.setLayout(new GridLayout(0,3)); 
			System.out.println("Panel Layout 2 gesetzt");}
		
		if(c==true){ add(JPanelInnen, BorderLayout.CENTER);
			System.out.println("Ausgabe aus panelInnen(): "+c);
			JPanelInnen.setLayout(new GridLayout(0,2)); 
			System.out.println("Panel Layout 3 gesetzt");}
		
		if(d==true){ add(JPanelInnen, BorderLayout.CENTER);
			System.out.println("Ausgabe aus panelInnen(): "+d);	
			JPanelInnen.setLayout(new GridLayout(0,1)); 
			System.out.println("Panel Layout 4 gesetzt");}		
	
		 JPanelInnen.add( new JPanel());
		
		
		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;
	}
	
	
	//Die Methode fuer Panel von Button
	private JPanel panelButton(){
		JPanel JPanelButton= new JPanel();
		//Schaltflaeche hinzufuegen
		buttonExit=new JButton("E x i t");
	
		//das Action-Command setzen
		buttonExit.setActionCommand("E x i t");
		
		
		//JPanelButton.setLayout(new FlowLayout(FlowLayout.RIGHT,20,220));
		JPanelButton.setLayout(new GridLayout(0,1));
		JPanelButton.add(buttonExit);
		
		InnereKlasse InnereKlasse = new InnereKlasse();
		buttonExit.addActionListener(InnereKlasse);
		JPanelButton.setBorder(new TitledBorder("Panel-Exit"));
	
		return JPanelButton;
	}
	
	
	
	//Die Methode fuer das innere Panel
	private JPanel panelRadiobuttons(){
		JPanel JPanelRadiobuttons= new JPanel();
		
		//Radiobuttons setzen
		layout1=new JRadioButton("Layout 1");
		layout2=new JRadioButton("Layout 2");
		layout3=new JRadioButton("Layout 3");
		layout4=new JRadioButton("Layout 4");
		
		//Buttongroup erzeugen
		gruppe = new ButtonGroup();
		gruppe.add(layout1);
		gruppe.add(layout2);
		gruppe.add(layout3);
		gruppe.add(layout4);
		
		//Radiobutton flowlayout aktivieren
		layout2.setSelected(true);
		
				
		//das Panel bekommt ein GridLaoyut mit 1 Spalte
		JPanelRadiobuttons.setLayout(new GridLayout(0,1));
		JPanelRadiobuttons.add(layout1);
		JPanelRadiobuttons.add(layout2);
		JPanelRadiobuttons.add(layout3);
		JPanelRadiobuttons.add(layout4);
		
		//und einen Rahmen
		JPanelRadiobuttons.setBorder(new TitledBorder("Ihre Auswahl: "));
		
	
		return JPanelRadiobuttons;
	}//Ende JPanelRadioButtons
	
	
	
	//Konstruktor
	public Anwendung(String titel){
	super(titel);
	

			
	//insgesamt 4 Panels
	JPanel panelAussen, panelInnen, panelButton, panelRadiobuttons;
	
	//die Panels über die Methoden erstellen
	panelInnen = panelInnen();
	panelButton = panelButton();
	panelRadiobuttons=panelRadiobuttons();
	
	
	panelAussen = new JPanel();
	panelAussen.add(panelInnen);
	panelAussen.add(panelRadiobuttons);
	panelAussen.add(panelButton);
	
	//die beiden kommen in die Mitte
	add(panelAussen,BorderLayout.CENTER);
	//das Panel mit den Buttons nach links
	add(panelRadiobuttons, BorderLayout.WEST);
	//add(panelInnen, BorderLayout.CENTER);
	add(panelButton, BorderLayout.EAST);
	

	layout1.setActionCommand("Layout 1");
	layout2.setActionCommand("Layout 2");
	layout3.setActionCommand("Layout 3");
	layout4.setActionCommand("Layout 4");
	
	
	
	//Den Listener mit der Schaltflaeche verbinden und mit RadioButtons
	InnereKlasse InnereKlasse=new InnereKlasse();	
	layout1.addActionListener(InnereKlasse);
	layout2.addActionListener(InnereKlasse);
	layout3.addActionListener(InnereKlasse);
	layout4.addActionListener(InnereKlasse);
	
	//Standart-Aktion fuer das Schliessen-Symbol
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	//Fenstergroesse setzen und anzeigen
	setSize(1000,300);
	//Fenstergoesse Veraenderung verhindern
	setResizable(false);
	setVisible(true);
	}//Ende Konstruktor
	
}

Das Layout ist um eine Buttonstelle verschoben und wenn man weitere RadioButtons anklickt,
dann werden obendrauf geoffnet, wenn man mit der Maus drueber geht, dann sieht man den ganzen Salat gemischt:shock:
 

Flown

Administrator
Mitarbeiter
Java:
package test;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;

public class Anwendung extends JFrame {

	private static final long serialVersionUID = 1L;

	private JRadioButton layout1, layout2, layout3, layout4;
	private JButton buttonExit;
	public JButton button1, button2, button3, button4, button5;
	private ButtonGroup gruppe;
	private JPanel jPanelInnen;

	private boolean a, b, c, d;

	// Innere Klassse
	class InnereKlasse implements ActionListener {

		public void actionPerformed(ActionEvent e) {

			if (e.getActionCommand().equals("E x i t")) {
				System.exit(0);
			}

			else if (e.getActionCommand().equals("Layout 1")) {
				a = true;
				b = false;
				c = false;
				d = false;
				panelInnen();
			}

			else if (e.getActionCommand().equals("Layout 2")) {
				a = false;
				b = true;
				c = false;
				d = false;
				panelInnen();

			}

			else if (e.getActionCommand().equals("Layout 3")) {
				a = false;
				b = false;
				c = true;
				d = false;
				panelInnen();

			}

			else if (e.getActionCommand().equals("Layout 4")) {
				a = false;
				b = false;
				c = false;
				d = true;
				panelInnen();

			}
		}

	}

	// Die Methode fuer das innere Panel
	public JPanel panelInnen() {
		jPanelInnen.removeAll();

		if (a) {
			jPanelInnen.setLayout(new GridLayout(0, 4));
		}

		else if (b) {
			jPanelInnen.setLayout(new GridLayout(0, 3));
		}

		else if (c) {
			jPanelInnen.setLayout(new GridLayout(0, 2));
		}

		else if (d) {
			jPanelInnen.setLayout(new GridLayout(0, 1));
		} else {
			jPanelInnen.setLayout(new FlowLayout());
		}

		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"));
		validate();
		return jPanelInnen;
	}

	// Die Methode fuer Panel von Button
	private JPanel panelButton() {
		JPanel JPanelButton = new JPanel();
		// Schaltflaeche hinzufuegen
		buttonExit = new JButton("E x i t");

		// das Action-Command setzen
		buttonExit.setActionCommand("E x i t");

		// JPanelButton.setLayout(new FlowLayout(FlowLayout.RIGHT,20,220));
		JPanelButton.setLayout(new GridLayout(0, 1));
		JPanelButton.add(buttonExit);

		InnereKlasse InnereKlasse = new InnereKlasse();
		buttonExit.addActionListener(InnereKlasse);
		JPanelButton.setBorder(new TitledBorder("Panel-Exit"));

		return JPanelButton;
	}

	// Die Methode fuer das innere Panel
	private JPanel panelRadiobuttons() {
		JPanel JPanelRadiobuttons = new JPanel();

		// Radiobuttons setzen
		layout1 = new JRadioButton("Layout 1");
		layout2 = new JRadioButton("Layout 2");
		layout3 = new JRadioButton("Layout 3");
		layout4 = new JRadioButton("Layout 4");

		// Buttongroup erzeugen
		gruppe = new ButtonGroup();
		gruppe.add(layout1);
		gruppe.add(layout2);
		gruppe.add(layout3);
		gruppe.add(layout4);

		// Radiobutton flowlayout aktivieren
		layout2.setSelected(true);

		// das Panel bekommt ein GridLaoyut mit 1 Spalte
		JPanelRadiobuttons.setLayout(new GridLayout(0, 1));
		JPanelRadiobuttons.add(layout1);
		JPanelRadiobuttons.add(layout2);
		JPanelRadiobuttons.add(layout3);
		JPanelRadiobuttons.add(layout4);

		// und einen Rahmen
		JPanelRadiobuttons.setBorder(new TitledBorder("Ihre Auswahl: "));

		return JPanelRadiobuttons;
	}// Ende JPanelRadioButtons

	// Konstruktor
	public Anwendung(String titel) {
		super(titel);

		// insgesamt 4 Panels
		JPanel panelAussen, panelInnen, panelButton, panelRadiobuttons;
		jPanelInnen = new JPanel();

		// die Panels über die Methoden erstellen
		panelInnen = panelInnen();
		panelButton = panelButton();
		panelRadiobuttons = panelRadiobuttons();

		panelAussen = new JPanel();
		panelAussen.add(panelInnen);
		panelAussen.add(panelRadiobuttons);
		panelAussen.add(panelButton);

		// die beiden kommen in die Mitte
		add(panelAussen, BorderLayout.CENTER);
		// das Panel mit den Buttons nach links
		add(panelRadiobuttons, BorderLayout.WEST);
		// add(panelInnen, BorderLayout.CENTER);
		add(panelButton, BorderLayout.EAST);

		layout1.setActionCommand("Layout 1");
		layout2.setActionCommand("Layout 2");
		layout3.setActionCommand("Layout 3");
		layout4.setActionCommand("Layout 4");

		// Den Listener mit der Schaltflaeche verbinden und mit RadioButtons
		InnereKlasse InnereKlasse = new InnereKlasse();
		layout1.addActionListener(InnereKlasse);
		layout2.addActionListener(InnereKlasse);
		layout3.addActionListener(InnereKlasse);
		layout4.addActionListener(InnereKlasse);

		// Standart-Aktion fuer das Schliessen-Symbol
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Fenstergroesse setzen und anzeigen
		setSize(1000, 300);
		// Fenstergoesse Veraenderung verhindern
		setResizable(false);
		setVisible(true);
	}// Ende Konstruktor

}

Hoffe es hilft dir weiter ... Die Anordnung von deinem GridLayout ist sehr merkwürdig, aber wenn du es so willst ;)
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Wobei ich eher soetwas bevorzugen würde:

BTW ich hab mir nich die Mühe gemacht alle Variablen klein zu schreiben:exclaim:

Java:
package test;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;

public class Anwendung extends JFrame {

	private static final long serialVersionUID = 1L;

	private JRadioButton layout1, layout2, layout3, layout4;
	private JButton buttonExit;
	public JButton button1, button2, button3, button4, button5;
	private ButtonGroup gruppe;
	private JPanel jPanelInnen;

	private boolean a, b, c, d;

	class InnereKlasse implements ActionListener {

		public void actionPerformed(ActionEvent e) {

			if (e.getActionCommand().equals("E x i t")) {
				System.exit(0);
			}

			else if (e.getActionCommand().equals("Layout 1")) {
				a = true;
				b = false;
				c = false;
				d = false;
				changeLayout();
			}

			else if (e.getActionCommand().equals("Layout 2")) {
				a = false;
				b = true;
				c = false;
				d = false;
				changeLayout();

			}

			else if (e.getActionCommand().equals("Layout 3")) {
				a = false;
				b = false;
				c = true;
				d = false;
				changeLayout();

			}

			else if (e.getActionCommand().equals("Layout 4")) {
				a = false;
				b = false;
				c = false;
				d = true;
				changeLayout();

			}
		}

	}

	public JPanel panelInnen() {
		changeLayout();

		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;
	}
	private void changeLayout() {

		if (a) {
			jPanelInnen.setLayout(new GridLayout(0, 4));
		}

		else if (b) {
			jPanelInnen.setLayout(new GridLayout(0, 3));
		}

		else if (c) {
			jPanelInnen.setLayout(new GridLayout(0, 2));
		}

		else if (d) {
			jPanelInnen.setLayout(new GridLayout(0, 1));
		} else {
			jPanelInnen.setLayout(new FlowLayout());
		}
		validate();
	}


	private JPanel panelButton() {
		JPanel JPanelButton = new JPanel();
		buttonExit = new JButton("E x i t");

		buttonExit.setActionCommand("E x i t");

		JPanelButton.setLayout(new GridLayout(0, 1));
		JPanelButton.add(buttonExit);

		InnereKlasse InnereKlasse = new InnereKlasse();
		buttonExit.addActionListener(InnereKlasse);
		JPanelButton.setBorder(new TitledBorder("Panel-Exit"));

		return JPanelButton;
	}

	private JPanel panelRadiobuttons() {
		JPanel JPanelRadiobuttons = new JPanel();

		layout1 = new JRadioButton("Layout 1");
		layout2 = new JRadioButton("Layout 2");
		layout3 = new JRadioButton("Layout 3");
		layout4 = new JRadioButton("Layout 4");

		gruppe = new ButtonGroup();
		gruppe.add(layout1);
		gruppe.add(layout2);
		gruppe.add(layout3);
		gruppe.add(layout4);

		layout2.setSelected(true);

		JPanelRadiobuttons.setLayout(new GridLayout(0, 1));
		JPanelRadiobuttons.add(layout1);
		JPanelRadiobuttons.add(layout2);
		JPanelRadiobuttons.add(layout3);
		JPanelRadiobuttons.add(layout4);

		JPanelRadiobuttons.setBorder(new TitledBorder("Ihre Auswahl: "));

		return JPanelRadiobuttons;
	}
	public Anwendung(String titel) {
		super(titel);

		JPanel panelAussen, panelInnen, panelButton, panelRadiobuttons;
		jPanelInnen = new JPanel();

		panelInnen = panelInnen();
		panelButton = panelButton();
		panelRadiobuttons = panelRadiobuttons();

		panelAussen = new JPanel();
		panelAussen.add(panelInnen);
		panelAussen.add(panelRadiobuttons);
		panelAussen.add(panelButton);


		add(panelAussen, BorderLayout.CENTER);
		add(panelRadiobuttons, BorderLayout.WEST);
		add(panelButton, BorderLayout.EAST);

		layout1.setActionCommand("Layout 1");
		layout2.setActionCommand("Layout 2");
		layout3.setActionCommand("Layout 3");
		layout4.setActionCommand("Layout 4");

		InnereKlasse InnereKlasse = new InnereKlasse();
		layout1.addActionListener(InnereKlasse);
		layout2.addActionListener(InnereKlasse);
		layout3.addActionListener(InnereKlasse);
		layout4.addActionListener(InnereKlasse);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		setSize(1000, 300);
		setResizable(false);
		setVisible(true);
	}

}
 

bandy

Bekanntes Mitglied
Wobei ich eher soetwas bevorzugen würde:

BTW ich hab mir nich die Mühe gemacht alle Variablen klein zu schreiben:exclaim:
:toll::applaus:
Danke das hilft sehr, werde es mir gleich anschauen wo der Fehler lag und warum, vielleicht werde ich noch einige Fragen haben zu den Aenderungen im Quelltext, aber erst muessen die Kopfschmerzen weg nach langem Suchen der Loesung. :)
 

bandy

Bekanntes Mitglied
Kein Wunder, dass ich da nicht weiter kam, da die Lehrer uns wieder Wissen vorenthalten haben bei Methoden:

Java:
removeAll()

und

Java:
validate()

Klar gibt es die API, aber wonach soll man dort schauen und warum? Der Anhaltspunkt fehlte. Ohne diesen Forum haette ich noch lange suchen muessen:rtfm::shock::rtfm:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
M passende Reflexion-Methode?? AWT, Swing, JavaFX & SWT 1
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
M Swing Methode datenLesen() greift auf catchBlock zu? AWT, Swing, JavaFX & SWT 25
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
Z Methode bei Boolean change neu Ausführen AWT, Swing, JavaFX & SWT 9
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
J Rekursive Methode JProgressBar AWT, Swing, JavaFX & SWT 4
A Methode pausieren bis anderes Ereignis ausgeführt AWT, Swing, JavaFX & SWT 2
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
I Methode Draw3DRect und DrawRect AWT, Swing, JavaFX & SWT 2
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
K Methode repaint() AWT, Swing, JavaFX & SWT 1
A Methode in bestimmten Intervall ausführen AWT, Swing, JavaFX & SWT 2
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
Q AWT Methodenaufruf aus actionPerformed-Methode AWT, Swing, JavaFX & SWT 4
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
P keyTyped-Methode AWT, Swing, JavaFX & SWT 1
D JavaFX Java Methoden mit JavaFX Methode kommunizieren lassen? AWT, Swing, JavaFX & SWT 3
M JavaFX Methode nach initialize() aufrufen AWT, Swing, JavaFX & SWT 6
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
A paint-Methode aufrufen AWT, Swing, JavaFX & SWT 13
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
K Swing Durch Methode erzeugte Buttons ansteuern AWT, Swing, JavaFX & SWT 5
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
S PaintIn - Methode AWT, Swing, JavaFX & SWT 1
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
K Kann nicht auf GUI Elemente zugreifen, mit einer Methode im Controller klappts, mit der anderen nich AWT, Swing, JavaFX & SWT 10
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Was ruft die Paint - Methode auf ? AWT, Swing, JavaFX & SWT 2
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
S Paint Methode ohne implements JPanel AWT, Swing, JavaFX & SWT 1
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
J Problem mit der paint Methode AWT, Swing, JavaFX & SWT 0
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
Junb 2D-Grafik paint() Methode bugt? AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
I Paint-Methode von nicht statischen Objekten aufrufen AWT, Swing, JavaFX & SWT 3
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Auf Methode zugreifen (am Schlauch steh) AWT, Swing, JavaFX & SWT 5
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
D Swing DefaultTableModel setValueAt Methode AWT, Swing, JavaFX & SWT 7
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
T Swing JPanel - "Open" Methode? AWT, Swing, JavaFX & SWT 6
P Swing actionPerformed()-Methode funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Applet Bricht Methode zwischendruch ab AWT, Swing, JavaFX & SWT 11
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
J Swing JTable - nach Sortieren andere Methode aufrufen AWT, Swing, JavaFX & SWT 2
C Swing Was macht die Methode "setDataProviderCreditShown(boolean b)" AWT, Swing, JavaFX & SWT 4
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable's valueChanged Methode überschreiben AWT, Swing, JavaFX & SWT 2
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
A Paint Methode externer auruf AWT, Swing, JavaFX & SWT 5
N Methode zum Prüfen ob Jtextfield verändert worden ist AWT, Swing, JavaFX & SWT 2
K beim Schließen des JFrames, Methode aufrufen AWT, Swing, JavaFX & SWT 3
J AWT Methode paint() AWT, Swing, JavaFX & SWT 4
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
E Umgang mit der Update Methode AWT, Swing, JavaFX & SWT 38
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
P Swing JPanel über Methode setzen AWT, Swing, JavaFX & SWT 2
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
eskimo328 Java6 Methode in Java5 verwenden (memory leak JInternalFrame) AWT, Swing, JavaFX & SWT 4
T Swing setText()-Methode Funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JLabel Methode setText funktioniert nicht AWT, Swing, JavaFX & SWT 5
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
S Visual Editor mit main Methode AWT, Swing, JavaFX & SWT 3
G paint-Methode kopiert GUI AWT, Swing, JavaFX & SWT 14
F Swing JFrame Methode beim Schließen aufrufen AWT, Swing, JavaFX & SWT 5
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
S Methode fireTableDataChanged() AWT, Swing, JavaFX & SWT 2
Y Swing Problem mit Main Methode AWT, Swing, JavaFX & SWT 8
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5
R Run Methode Probleme AWT, Swing, JavaFX & SWT 2
F AWT Probleme mit der paint() methode AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben