Hallo Leute,
ich habe folgendes Problem: in einer kleinen Applikation habe ich eine Klasse entworfen, die sozusagen Buch führt über die verschiedenen Komponenten, die auf einem Panel abgelegt sind. So ist zumindest die Theorie.
Die Realität sieht so aus, dass ich irgendwie "zwischen" zwei Methoden eine NullPointerException bekomm, und ich versteh nicht warum...?!
Also, hier mal der Code der "Buchführ-Klasse"
Wenn das Programm gestartet wird, wird mit dem Frame auch eine Instanz des Dokuments erzeugt:
Dann kann man z.B. auf einen Button klicken um eine sogenannte ClassBox zu erzeugen, die (gespickt mit einigen Labels) als Rechteck auf den Frame gelegt werden kann...
Die ganzen System.out-Anweisungen hab ich mal zur Ablaufkontrolle eingeführt. Und beim Ausführen bekomm ich dann folgende Meldung:
Das heißt, der Aufruf "doc.incrementClass(activeInstance)" ist schon durchgeführt (oder dabei), aber dennoch bekomm ich keine Meldung "incrementClass entered" - es bleibt also irgendwie dazwischen hängen...?! Und doc ist initialisiert, weil der Aufruf ja gleich bei Programmstart stattfindet...
Könnt ihr euch das erklären? Ist am Grundprinzip irgendwas falsch? Ich hab vorher noch nie mit Vektoren gearbeitet, haperts da irgendwie dran? Bitte, bitte helft...!
Grüße,
Kirsten.
ich habe folgendes Problem: in einer kleinen Applikation habe ich eine Klasse entworfen, die sozusagen Buch führt über die verschiedenen Komponenten, die auf einem Panel abgelegt sind. So ist zumindest die Theorie.
Die Realität sieht so aus, dass ich irgendwie "zwischen" zwei Methoden eine NullPointerException bekomm, und ich versteh nicht warum...?!
Also, hier mal der Code der "Buchführ-Klasse"
Code:
package editor;
import java.util.*;
public class Document
{
Vector classes;
Vector arrows;
Vector methods;
int noclass;
int noarrow;
int nomethod;
public Document()
{
classes = new Vector(10,5);
arrows = new Vector(10,5);
methods = new Vector(20,5);
noclass = 0;
noarrow = 0;
nomethod = 0;
System.out.println("document initialised");
}
public void incrementClass(ClassBox box)
{
System.out.println("incrementClass entered");
classes.add(box);
System.out.println("value added");
noclass++;
System.out.println("counter incremented");
System.out.println("# classes: " + noclass);
}
public void incrementArrow(Arrow arrow)
{
arrows.add(arrow);
noarrow++;
System.out.println("# arrows: " + noarrow);
}
public void incrementMethod(String meth)
{
methods.add(meth);
nomethod++;
System.out.println("# methods: " + nomethod);
}
}
Wenn das Programm gestartet wird, wird mit dem Frame auch eine Instanz des Dokuments erzeugt:
Code:
public static void main(String args[])
{
Document d = new Document();
TickFrame tf = new TickFrame();
tf.setVisible(true);
}
Dann kann man z.B. auf einen Button klicken um eine sogenannte ClassBox zu erzeugen, die (gespickt mit einigen Labels) als Rechteck auf den Frame gelegt werden kann...
Code:
private void addClassButtonActionPerformed(ActionEvent evt)
{
activeInstance = new ClassBox(TickFrame.this,main_panel,doc);
System.out.println("first");
main_panel.add(activeInstance);
System.out.println("almost there");
doc.incrementClass(activeInstance);
System.out.println("done");
}
Die ganzen System.out-Anweisungen hab ich mal zur Ablaufkontrolle eingeführt. Und beim Ausführen bekomm ich dann folgende Meldung:
document initialised
first
almost there
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at editor.TickFrame.addClassButtonActionPerformed(TickFrame.java:168)
at editor.TickFrame.access$5(TickFrame.java:162)
at editor.TickFrame$4.actionPerformed(TickFrame.java:90)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
[...]
at java.awt.EventDispatchThread.run(Unknown Source)
Das heißt, der Aufruf "doc.incrementClass(activeInstance)" ist schon durchgeführt (oder dabei), aber dennoch bekomm ich keine Meldung "incrementClass entered" - es bleibt also irgendwie dazwischen hängen...?! Und doc ist initialisiert, weil der Aufruf ja gleich bei Programmstart stattfindet...
Könnt ihr euch das erklären? Ist am Grundprinzip irgendwas falsch? Ich hab vorher noch nie mit Vektoren gearbeitet, haperts da irgendwie dran? Bitte, bitte helft...!
Grüße,
Kirsten.