Warum nullPointerException?

nickname

Bekanntes Mitglied
Hi Leute,

eins verstehe ich nicht. Folgendes Prob.:

(Das ist nur ein kleines Testprog.)

Hab 2 Pakete:

1. Paket "Mainklasse"
2. Paket "ItemEventKlasse"

Code zu Paket 1:
Java:
public class Versuch extends JFrame{

	private String[] stringButton = {"Close", "Save", "Delete All"};	
	
	JPanel mainPanel;
	JTextField[] textField = null;
	JComboBox cb = null;
	
	public Versuch()
	{
		Container c = getContentPane();			
		
			mainPanel = new JPanel();			
			c.add(mainPanel);
			
			showTextField();
			zeige(textField);
			mainPanel.add(showComboBox(stringButton));
			
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(640,330);
		setVisible(true);
		setLocationRelativeTo(null);
		setResizable(false);
	}
	
		public void zeige(JTextField[] tf)
		{
			if(textField == null)
			{
				System.out.println("Das Array ist leer!");				
			}
			else
			{
				for(int x = 0; x < tf.length; x++)
				{
					mainPanel.add(textField[x]);
				}
			}
		}
		
		public JTextField[] showTextField()
		{
			textField = new JTextField[2];
			for(int x = 0; x < 2; x++)
			{
				textField[x] = new JTextField();
				textField[x].setPreferredSize(new Dimension(130,23));
			}
			return textField;
		}
		
		public JComboBox showComboBox(String[] string)
		{
			cb = new JComboBox();
			cb.addItemListener(new ItemListenerClass());//<--Hier wird der Fehler angezeigt		
				for(int x = 0; x < string.length; x++)
				{
					cb.addItem(string[x]);
				}
				return cb;
		}

		public String[] getStringArray()
		{
			return stringButton;
		}
	
	public static void main(String[] args)
	{
		Versuch frame = new Versuch();
		
	}
}

Code zu Paket 2:
Java:
public class ItemListenerClass implements ItemListener{

	JTextField[] d;
	String[] str = null;
	Versuch v;
	
	public void itemStateChanged(ItemEvent ie)
	{
		JComboBox cb = (JComboBox)ie.getSource();
			int i = cb.getSelectedIndex();
				switch(i)
				{
				case 1: System.exit(0);
					break;
				case 2: textMethode2(v);//<-- Hier wird der Fehler angezeigt
						System.out.println(str[1]);
						
						
				}
	}
	
		public void textMethode2(Versuch v)
		{
			int i = v.getStringArray().length;//<-- im 1. Paket über der Main-Methode
			for(int x = 0; x < i; x++)
			{
				str[x] = v.getStringArray()[x];
			}
		}
}

Warum erhalte ich eine "nullPointerException", wenn ich in der JComboBox das zweite Element wähle? Das verstehe ich nicht. Wird denn die JComboBox[] nicht in der Klasse des ersten Paketes schon vorher initialisiert?

gruß nickname
 

icarus2

Top Contributor
Ich glaube das Problem ist, dass Versuch nicht initialisierst ist, wodurch er 'null' ist.

Mach dazu einen Konstruktor:
[Java]
public ItemListenerClass(Versuch v){
this.v = v;
}
[/Java]

Den Konstruktor wie folgt in der Klasse 'Versuch' aufrufen:
[Java]
ItemListenerClass itl = new ItemListenerClass(this);
[/Java]

Ich habs nicht getestet, hoffe aber, dass es so funktioniert.
 

nickname

Bekanntes Mitglied
Hi icarus2,

danke, hab´s versucht aber leider klappt es immer noch nicht.:noe:

Aber wenn ich die ItemListenerclass als Subklasse der "Versuch-Klasse" definieren würde, dann
würde mein Vorhaben bestimmmt funktionieren aber das soll nicht der Sinn der Sache sein.

Ich wollte gerne das alles so machen, wie ich es vorhabe.


Aber irgendwie ...;(

Ich kann auch keine Instanz der Klasse "Versuch" in der Klasse "ItemListenerClass" erzeugen, denn dann gibt es ein "stackoverflow".
Hab mal folgendes versucht, da ich ja auch den "addItemListener(new ItemListenerClass())" in der Klasse "Versuch" ändern musste.
Java:
public JComboBox showComboBox(String[] string)
		{
			cb = new JComboBox();
			cb.addItemListener(new ItemListenerClass(new Versuch()));//<-- Ergebnis "stackoverflow"			
				for(int x = 0; x < string.length; x++)
				{
					cb.addItem(string[x]);
				}
				return cb;
		}

gruß nickname
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> danke, hab´s versucht aber leider klappt es immer noch nicht.

Code?
anders gehts quasi nicht

> Aber wenn ich die ItemListenerclass als Subklasse der "Versuch-Klasse" definieren würde

das kommt nicht in Frage,
und hat mit dem Vorschlag, das Versuch-JFrame als Parameter im Konstruktor zu übergeben, auch nicht viel zu tun

> Ich kann auch keine Instanz der Klasse "Versuch" in der Klasse "ItemListenerClass" erzeugen

ebenso abwegig
 

nickname

Bekanntes Mitglied
Paket 1 Code:
Java:
public class Versuch extends JFrame{

	private String[] stringButton = {"Close", "Save", "Delete All"};	
	
	JPanel mainPanel = null;
	JTextField[] textField = null;
	JComboBox cb = null;
	
	
	
	public Versuch()
	{
		Container c = getContentPane();			
		
		ItemListenerClass itc = new ItemListenerClass(this);
			mainPanel = new JPanel();			
			c.add(mainPanel);
			
			showTextField();
			zeige(textField);
			mainPanel.add(showComboBox(stringButton));
			
       ItemListenerClass itc = new ItemListenerClass(this);
			
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setSize(640,330);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		
	}
	
		public void zeige(JTextField[] tf)
		{
			if(textField == null)
			{
				System.out.println("Das Array ist leer!");				
			}
			else
			{
				for(int x = 0; x < tf.length; x++)
				{
					mainPanel.add(textField[x]);
				}
			}
		}

		public JTextField[] showTextField()
		{
			textField = new JTextField[2];
			for(int x = 0; x < 2; x++)
			{
				textField[x] = new JTextField();
				textField[x].setPreferredSize(new Dimension(130,23));
			}
			return textField;
		}
		
		public JComboBox showComboBox(String[] string)
		{
			cb = new JComboBox();
			cb.addItemListener(new ItemListenerClass(this));			
				for(int x = 0; x < string.length; x++)
				{
					cb.addItem(string[x]);
				}
				return cb;
		}
	
		public JTextField[] getTextFieldArray()
		{
			return textField;
		}
	
		public String[] getStringArray()
		{
			return stringButton;
		}
	
	public static void main(String[] args)
	{
		Versuch frame = new Versuch();
		
	}
}

Paket 2 Code:
Java:
public class ItemListenerClass implements ItemListener{

	JTextField[] d;
	String[] str = null;
	Versuch v;
	
	public ItemListenerClass(Versuch v)
	{
		this.v = v;
	}
	
	public void itemStateChanged(ItemEvent ie)
	{
		JComboBox cb = (JComboBox)ie.getSource();
			int i = cb.getSelectedIndex();
				switch(i)
				{
				case 1: System.exit(0);
					break;
				case 2: textMethode2(v);
						System.out.println(str[1]);
						
				}
	}
		public void textMethode2(Versuch v)
		{
			int i = v.getStringArray().length;
			for(int x = 0; x < i; x++)
			{
				str[x] = v.getStringArray()[x];
			}
		}
}

ich werde es mal gleich mit dem debugger versuchen...

danke, nickname
 

icarus2

Top Contributor
Jetzt addest du ja gar keinen Listener wenn ich das richtige sehe.

Nach dem
[Java]
ItemListenerClass itc = new ItemListenerClass(this);
[/Java]

noch
[Java]
cb.addItemListener(itc);
[/Java]

machen.

Ich weiss nicht wofür das zweite ItemListenerClass itc = new ItemListenerClass(this); das sein soll.

*Edit
Hmm, das add() ist zwar drinn. Allerdings verstehe ich nicht wozu ein par ItemListenerClass itc = new ItemListenerClass(this) drin sind im code.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
später gibts gar noch einen dritten, der ist dann korrekt geaddet (Zeile 53, edit: 62),
abgesehen von den beiden unnötigen Listenern läuft es dann erstmal, so wars gedacht

es gibt zwar immer noch eine NullPointerException, aber eine andere ;)
die musst du selber finden und bearbeiten
 
Zuletzt bearbeitet von einem Moderator:

nickname

Bekanntes Mitglied
Hi,

man war das viel Rätselrate... aber ich habe es hinbekommen... mehr oder weniger. Aber warum bekomme ich eigentlich diese Ausgabe in der Konsole?

Java:
CloseSaveDelete All
CloseSaveDelete All

Hier mal die Änderungen (nur die wichtigsten):

1. Paket:
Java:
private String[] stringButton = {"Close", "Save", "Delete All"};	
	
	JPanel mainPanel;
	JTextField[] textField;
	JComboBox cb;
	
	ItemListenerClass itl = new ItemListenerClass(this);//<--ist auch jetzt der einzige!!
	
	public Versuch()
	{
		Container c = getContentPane();

2. Paket:
Java:
JTextField[] d;
	Versuch v;
	String[] str;//<-- ;-)
	
	public ItemListenerClass(Versuch v)
	{
		this.v = v;
	}...

public String[] textMethode2()
		{
			int i = v.getStringArray().length;
			str = new String[i];//<-- und hier!
			for(int x = 0; x < i; x++)
			{
				str[x] = v.getStringArray()[x];
			}
			return str;
		}

Vielleicht habt ihr ja noch Antwort auf meine onbe gestellte Frage.

Gruß nickname und danke an beide!

(Mein Eclipse ist gerade beim debuggen dermaßen abgestürzt, dass ich ca. 2 Min. gebraucht habe, um meinen Rechner runter zu fahren)
 

icarus2

Top Contributor
Nur so als Tipp. Versuche möglichst sinvolle Variablennamen zu geben. Dem JTextField d könnte man vielleicht den Namen textField geben oder so. Der Code ist dadurch etwas übersichtlicher und besser verständlich. (Ich meine nur in der zweiten Klasse, sonst passts)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
mit 'paar Änderungen' ist es nicht getan, müßte schon der aktuelle Code sein, am besten auch noch Bedienungshinweise beim Ausführen,
im alten Code gab es quasi nur
> System.out.println(str[1]);
an Ausgaben, damit kann es nur zu 'Save' kommen, nicht zu den anderen,

zweimal die Ausgabe macht Sinn, weil es zwei Events gibt, einmal zum Deselektieren des alten Elementes der ComboBox, einmal fürs neue
 

nickname

Bekanntes Mitglied
Hi Leute,

danke für eure Hilfe und Anregungen.

icarus2 Nur so als Tipp. Versuche möglichst sinvolle Variablennamen zu geben.
Ich gebe Dir da völlig recht. Die beiden Klassen waren nur zu testzwecken, weil mein anderes Programm viel zu lang wäre und auch nicht unbedingt damit sehr hilfreich. Ich hatte halt nur damit Prob.

SlaterB
weil es zwei Events gibt, einmal zum Deselektieren des alten Elementes der ComboBox, einmal fürs neue
:oops: stimmt ja...

Also, danke nochmal!

Gruß nickname
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
M NullPointerException Allgemeine Java-Themen 4
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben