Hallöchen alle,
ich habe da mal ein Problemchen, ich habe ein Quiz-Spiel geschrieben das ich gerne zum lernen für meine Fischerei Pfrüfung nutzen möchte. Ich habe eine grafische Benutzeroberfläche, die Frage, Antwort und Lösung habe ich durch splitten auseinander gelegt sodass ich es beim Fragen eingeben einfacher und übersichtiger habe.
Das Programm splittet auch schön alles auf, hab ich schon per Haltepunkte debuggt.
Problem ist jetzt ein Null.pointer mit dispatchUncaughtException
dies geschieht genau dann wenn die Frage in das Label geschrieben werden soll... ich bin etwas ratlos warum es jetzt auf einmal nicht mehr so klappt... vllt könnt ihr mir dabei bitte helfen.
Hier mal der Code(imports erspar ich euch):
Ich benutze Netbeans, Windows 7
Klasse Quiz_Fenster.java
Klasse fragen_change.java
und die Klasse Fragen.java
hier ist noch die Fehlermeldung:
Exception in thread "main" java.lang.NullPointerException
at quiz.frage_change.aendereText(frage_change.java:74)
at quiz.frage_change.neueFrage(frage_change.java:31)
at quiz.frage_change.<init>(frage_change.java:23)
at quiz.Quiz_Fenster.main(Quiz_Fenster.java:28)
wenn ich es per Haltepunkte mache dann taucht das dispatchUncaughtException auf
Ich hoffe ihr könnt mir helfen und findet mein Fahler....
danke schonmal fürs anschauen
LG Jackii
ich habe da mal ein Problemchen, ich habe ein Quiz-Spiel geschrieben das ich gerne zum lernen für meine Fischerei Pfrüfung nutzen möchte. Ich habe eine grafische Benutzeroberfläche, die Frage, Antwort und Lösung habe ich durch splitten auseinander gelegt sodass ich es beim Fragen eingeben einfacher und übersichtiger habe.
Das Programm splittet auch schön alles auf, hab ich schon per Haltepunkte debuggt.
Problem ist jetzt ein Null.pointer mit dispatchUncaughtException
dies geschieht genau dann wenn die Frage in das Label geschrieben werden soll... ich bin etwas ratlos warum es jetzt auf einmal nicht mehr so klappt... vllt könnt ihr mir dabei bitte helfen.
Hier mal der Code(imports erspar ich euch):
Ich benutze Netbeans, Windows 7
Klasse Quiz_Fenster.java
Java:
public class Quiz_Fenster implements ActionListener {
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
JLabel frage;
JButton ant[] = new JButton[3];
JFrame wl;
int loesung = 0;
public static void main(String[] args) {
new frage_change();
//new Quiz_Fenster(); //zum testen des Grundgeruest
}
public Quiz_Fenster() {
wl = new JFrame();
wl.setSize(800,400); //breite, hoehe
wl.setLocation((int) (dim.getWidth()-400)/2, (int) (dim.getHeight()-300 /2));
wl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
wl.setVisible(true);
wl.setLayout(null);
ant[0] = new JButton(" ");
ant[0].setBounds(52, 120, 200, 40); //vom rand links,xx, lange,xx
ant[0].addActionListener(this);
wl.add(ant[0]);
ant[1] = new JButton(" ");
ant[1].setBounds(52, 190, 200, 40); //vom rand links,xx, lange,xx
ant[1].addActionListener(this);
wl.add(ant[1]);
ant[2] = new JButton(" ");
ant[2].setBounds(52, 260, 200, 40); //vom rand links,xx, lange,xx
ant[2].addActionListener(this);
wl.add(ant[2]);
frage = new JLabel("Hier steht die Frage !");
frage.setBounds(52, 15, 250, 40);
wl.add(frage);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == ant[0]) {
if(loesung == 1) {
frage_change.neueFrage();
} else {
Nachricht("Falsch", "Versuche es später nochmal...");
}
}
if(e.getSource() == ant[1]) {
if(loesung == 2) {
frage_change.neueFrage();
} else {
Nachricht("Falsch", "Versuche es später nochmal...");
}
}
if(e.getSource() == ant[2]) {
if(loesung == 3) {
frage_change.neueFrage();
} else {
Nachricht("Falsch", "Versuche es später nochmal...");
}
}
}
public void ChangeButtonText(int button, String text) {
ant[button -1].setText(text);
}
public void ChangeLabelText(String text) {
frage.setText(text); //macht er nicht
}
public void Nachricht(String Aussage, String info) {
Object[] options = {"OK"};
JOptionPane.showOptionDialog(null, Aussage, info, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
}
}
Klasse fragen_change.java
Java:
public class frage_change {
static String ri_frage = null;
static String op1 = null; //Option 1
static String op2 = null;
static String op3 = null;
static int loesung = 0;
static Quiz_Fenster quiz;
static Fragen fragen_klasse;
static String akt_frage;
public frage_change() {
Quiz_Fenster quiz = new Quiz_Fenster();
neueFrage();
}
public static void neueFrage() {
fragen_klasse = new Fragen();
akt_frage = fragen_klasse.frage;
parser();
aendereText();
}
public static void parser() {
String[] frage = akt_frage.split("\\$");
for(int x = 0; x < frage.length; x++) {
switch(x) {
case 0:
ri_frage = frage[x];
// System.out.println(ri_frage);
break;
case 1:
op1 = frage[x];
// System.out.println(op1);
break;
case 2:
op2 = frage[x];
// System.out.println(op2);
break;
case 3:
op3 = frage[x];
// System.out.println(op3);
break;
case 4:
loesung = Integer.parseInt(frage[x]);
// System.out.println("Was steht im case 4 in loesung");
// System.out.println(loesung);
break;
}
}
}
public static void aendereText() {
System.out.println("Wie ist die Frage?");
System.out.println(ri_frage); //hier gibt er das richtige aus
quiz.ChangeLabelText(ri_frage); //hier schiesst er raus, ri_frage wird nicht richtig uebermittelt
// System.out.println("Was steht jetzt in der Loesung?");
// System.out.println(loesung);
quiz.loesung = loesung; //dann springt er hier raus
quiz.ChangeButtonText(1, op1);
quiz.ChangeButtonText(2, op2);
quiz.ChangeButtonText(3, op3);
}
}
und die Klasse Fragen.java
Java:
public class Fragen {
int zufall;
String fragen[] = new String[19];
static String frage;
public Fragen(){
fragen[1] = "Welcher Fisch hat ein punkt? $Antowort A $Antwort B $Antwort C $1"; //Fragen können hier drunter gestellt werden
fragen[2] = "Hecht? $Antowort A $Antwort B $Antwort C $2";
fragen[3] = "Forelle? $Antowort A $Antwort B $Antwort C $3";
fragen[4] = "Karpfen? $Antowort A $Antwort B $Antwort C $3";
fragen[5] = "Zander? $Antowort A $Antwort B $Antwort C $3";
fragen[6] = "Wels? $Antowort A $Antwort B $Antwort C $3";
frage = fragen[zufall(1,7)];
}
public int zufall(int min, int max) {
zufall = (int)((max-min)* Math.random()+ min);
return zufall;
}
}
hier ist noch die Fehlermeldung:
Exception in thread "main" java.lang.NullPointerException
at quiz.frage_change.aendereText(frage_change.java:74)
at quiz.frage_change.neueFrage(frage_change.java:31)
at quiz.frage_change.<init>(frage_change.java:23)
at quiz.Quiz_Fenster.main(Quiz_Fenster.java:28)
wenn ich es per Haltepunkte mache dann taucht das dispatchUncaughtException auf
Ich hoffe ihr könnt mir helfen und findet mein Fahler....
danke schonmal fürs anschauen
LG Jackii