Layout neu zeichnen lassen

llabusch

Mitglied
Hallo,

Ich möchte das Layout eines Panels neu zeichnen lassen über die Auswahl von RadioButtons. Alles ist ausprogrammiert und die Radiobuttons funktionieren perfekt, aber ich bekomme eine Exception wenn ich diese dann drücke, also das Layout änder möchte....


Hier der Code:


Java:
import java.awt.FlowLayout;
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;							//Die Variablen für die Labels, welche von der Layout-Änderung betroffen werden
	private JPanel layoutaenderung;									//Variable für das Panel des veränderbaren Layouts
	
	
	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
		
		
		setLayout(new FlowLayout());								//Standart-Layout setzen
		
		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;
	}
	
	
	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){
					
					layoutaenderung.setLayout(new FlowLayout());
					layoutaenderung.revalidate();
				}
				if(layout2.isSelected() == true){
					
					layoutaenderung.setLayout(new GridLayout(3,0));
					layoutaenderung.revalidate();
					
				}
				if(layout3.isSelected() == true){
					
					layoutaenderung.setLayout(new GridLayout(2,0));
					layoutaenderung.revalidate();
					
				}
			}
			
			
		}
		
		
	}
	public LayoutWechselGUI(String titel){							//Den Konstruktor anlegen
		super(titel);
		
		JPanel auswahlbereich, layoutaenderung;						//2 Panels vereinbaren
		
		auswahlbereich = MakeLabel2();								//Die Panels mit den Methoden erzeugen lassen
		layoutaenderung = MakeLabel3();
		
		
		setLayout(new GridLayout(2,0));								//Für das Hauptfenster ein Grid-Layout mit 2 Zeilen erstellen
		
				
		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
	}
	
	
	
}


Und hier die Exception:

Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at LayoutWechselGUI$DerListener.itemStateChanged(LayoutWechselGUI.java:92)
	at javax.swing.AbstractButton.fireItemStateChanged(AbstractButton.java:2046)
	at javax.swing.AbstractButton$Handler.itemStateChanged(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireItemStateChanged(DefaultButtonModel.java:455)
	at javax.swing.JToggleButton$ToggleButtonModel.setSelected(JToggleButton.java:272)
	at javax.swing.ButtonGroup.setSelected(ButtonGroup.java:164)
	at javax.swing.JToggleButton$ToggleButtonModel.setSelected(JToggleButton.java:254)
	at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:289)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3311)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
 

Flown

Administrator
Mitarbeiter
Ist das jetzt so schwer, warum versuchst du nicht einfach mal deinen Code zu verstehen?
Deine Variable layoutaenderung wird nie initialisiert!

[EDIT]
Sorry so stimmt das nicht ganz!
Du hast eine globale Variable layoutaenderung und überdeckst si mit einer lokalen Variable mit dem selben Namen im Konstruktor.
Lösche die lokale Variable bei

Java:
JPanel auswahlbereich, layoutaenderung;

dann funktionierts auch!
[/EDIT]
 
Zuletzt bearbeitet:

Joose

Top Contributor
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Die Exception sagt dir ganz genau was der Fehler ist und wo er auftritt, durch debuggen hättest du herausgefinden das "layoutaenderung" null ist und du aber versuchst eine Methode des nicht vorhanden Objektes aufzurufen ==> NULLPOINTER

Java:
.....
public class LayoutWechselGUI extends JFrame {
.....
	private JPanel layoutaenderung;									//Variable für das Panel des veränderbaren Layouts
	
	class DerListener implements ItemListener{	
		@Override
		public void itemStateChanged(ItemEvent e) {
			.......
				if(layout1.isSelected() == true){
					
					layoutaenderung.setLayout(new FlowLayout());
					layoutaenderung.revalidate();
				}
                        ........
			}
	}

	public LayoutWechselGUI(String titel){	
		
		JPanel auswahlbereich, layoutaenderung;						//2 Panels vereinbaren
		
		auswahlbereich = MakeLabel2();								//Die Panels mit den Methoden erzeugen lassen
		layoutaenderung = MakeLabel3();
}
}

Anmerkung: Leite nur von Klassen ab wenn du diese um Funktionalität erweitern willst, nicht wenn du einfach ein Objekt davon verwenden willst!

Die Klasse LayoutWechselGUI hat ein Klassenattribut layoutaenderung, im Konstruktor dieser Klasse deklarierst du eine lokale Variable mit dem selben Namen und initialisierst diese. Die Klassenvariable ist dabei aber immer noch null!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
S setContentView(R.Layout.XXX) wird Rot angezeigt Java Basics - Anfänger-Themen 0
C Erste Schritte Layout an Bildschirmauflösung anpassen Java Basics - Anfänger-Themen 9
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
N Erste Schritte JOptionPane - zerstörtes Layout Java Basics - Anfänger-Themen 2
R Card Layout refresh nach Änderung Java Basics - Anfänger-Themen 1
P welche Komponente ist im Layout? Java Basics - Anfänger-Themen 2
F Welchen Layout Manager wählen? Java Basics - Anfänger-Themen 13
Q Layout Manager Java Basics - Anfänger-Themen 6
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
T Layout Java Basics - Anfänger-Themen 9
L Anderes Layout für JOptionPane? Java Basics - Anfänger-Themen 6
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
M Text linksbündig im Box'ed Layout Java Basics - Anfänger-Themen 4
M Interface Das Null-Layout Java Basics - Anfänger-Themen 12
P GUI - Layout per Laufzeit erstellen/verändern? Java Basics - Anfänger-Themen 6
B Daten eingeben und ausgeben mit einem Layout Java Basics - Anfänger-Themen 17
L Erste Schritte Layout eines Java Programms Java Basics - Anfänger-Themen 5
P Layout Manager - Welches Layout für Memory? Java Basics - Anfänger-Themen 7
F welches Layout für JButton-Liste verwenden Java Basics - Anfänger-Themen 6
JAVAnnik layout erstellen Java Basics - Anfänger-Themen 24
R Welcher Layout Manager-für so ein Fenster? Java Basics - Anfänger-Themen 5
J Unterschiedliche Spaltengröße im Grid(bag)layout Java Basics - Anfänger-Themen 6
M Layout einfach bilden Java Basics - Anfänger-Themen 4
F Card Layout Java Basics - Anfänger-Themen 8
S JButton trotz Box-Layout skalieren Java Basics - Anfänger-Themen 6
L Layout Frage Java Basics - Anfänger-Themen 2
N GUI-Layout-Problem&Anordnung Java Basics - Anfänger-Themen 14
M Frage zu GUI-Layout Java Basics - Anfänger-Themen 4
N Welches Layout soll ich verwenden? Java Basics - Anfänger-Themen 3
W Unterschied JFrame und JLabel bezüglich Layout? Java Basics - Anfänger-Themen 2
N Layout Probleme Java Basics - Anfänger-Themen 2
J Layout bei Swing Java Basics - Anfänger-Themen 4
W Grid Layout wird falsch dargestellt Java Basics - Anfänger-Themen 4
S Layout JDialog Java Basics - Anfänger-Themen 9
T Border Layout alle mittleren felder gleich groß Java Basics - Anfänger-Themen 3
D Der richtige Layout Manager Java Basics - Anfänger-Themen 8
T Eine doofe Frage zum null-Layout-Manager Java Basics - Anfänger-Themen 6
M Layout Probleme Java Basics - Anfänger-Themen 10
T Layout Problem Java Basics - Anfänger-Themen 2
B Frage zum Layout Java Basics - Anfänger-Themen 6
M zufällige auswahl eines Panels aus Grid Layout Java Basics - Anfänger-Themen 3
K Layout Java Basics - Anfänger-Themen 6
J Layout Java Basics - Anfänger-Themen 8
B package org.jdesktop.layout does not exist Java Basics - Anfänger-Themen 8
A center in einer border layout Java Basics - Anfänger-Themen 8
E Layout für Prozentaufteilung Java Basics - Anfänger-Themen 3
kulturfenster Tic Tac Toe Layout-Sorgen Java Basics - Anfänger-Themen 25
A Problem mit BorderLayout und null-Layout Java Basics - Anfänger-Themen 5
N Bildbeispiel von Layout: wie nutze ich das GBLayout dafür? Java Basics - Anfänger-Themen 17
mwildam JToolBar und Group-Layout (NetBeans) dockt nicht richtig an Java Basics - Anfänger-Themen 3
Q Classe durch Buttonklick im Layout öffnen Java Basics - Anfänger-Themen 4
A frames layout Java Basics - Anfänger-Themen 4
G Bilder im Grid-Bag-Layout Java Basics - Anfänger-Themen 2
H Layout wird nicht eingehalten . Java Basics - Anfänger-Themen 3
G Welcher Layout-Manager? *confused* Java Basics - Anfänger-Themen 2
D Layout beim Applet Java Basics - Anfänger-Themen 6
G Layout Java Basics - Anfänger-Themen 3
G Layout Java Basics - Anfänger-Themen 9
U Welches Layout? Java Basics - Anfänger-Themen 6
I Layout anpassen Java Basics - Anfänger-Themen 4
L Layout Problem Java Basics - Anfänger-Themen 2
J Tabelle erneuert bei Card Layout nicht Java Basics - Anfänger-Themen 2
S Layout Probleme (Kein Adden möglich) Java Basics - Anfänger-Themen 18
M ScrollPane Flow Layout Java Basics - Anfänger-Themen 4
P Null Layout Java Basics - Anfänger-Themen 17
R JPanel und Layout Java Basics - Anfänger-Themen 4
Bierhumpen Swing und Layout Java Basics - Anfänger-Themen 18
M JButton im JLabel Layout Java Basics - Anfänger-Themen 12
Z JButton vs Layout Java Basics - Anfänger-Themen 8
E Scrollbar mit NULL- Layout? Java Basics - Anfänger-Themen 4
L Swing - Layout-Problem Java Basics - Anfänger-Themen 12
B Null-Layout oder GridLayout usw. Java Basics - Anfänger-Themen 5
L Layout Java Basics - Anfänger-Themen 5
DEvent anfängerfrage: wieso layout erst beim verändern? Java Basics - Anfänger-Themen 6
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
K 3D Fläche Zeichnen Java Basics - Anfänger-Themen 2
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
V Speicherzustand zeichnen Java Basics - Anfänger-Themen 0
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
Mosquera f(x)=x² zeichnen Java Basics - Anfänger-Themen 5
J Graphen in Java zeichnen Java Basics - Anfänger-Themen 11
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
S Zeichnen mit Wiederholungen Java Basics - Anfänger-Themen 12
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25

Ähnliche Java Themen

Neue Themen


Oben