Swing JOptionPane Verwirrung

lobnews

Mitglied
Guten Tag.
Ich bin schon seit ein paar Tagen ein kleines Programm für einen Bekannten zu schreiben. Dieses Programm nutzt JOptionPane, da mir die JFrames bis jetzt zu kompliziert sind. Dieses Programm organisiert einfach nur Turniere. Bei der Programmierung bin ich aber gestern auf ein Problem gestossen. Einen NullPointerException, um genau zu sein java.lang.NullPointerException: null.
Dieser wird mir in der ersten Codezeile angezeigt.
Java:
JOptionPane.showMessageDialog(null,"Die nächsten Spiele sind:" + "/n"
                    + s0.getMan1().getSpieler() + " gegen " + s0.getMan2().getSpieler() + "/n"
                    + s1.getMan1().getSpieler() + " gegen " + s1.getMan2().getSpieler() + "/n"
                    + s2.getMan1().getSpieler() + " gegen " + s2.getMan2().getSpieler(),
                    "", JOptionPane.PLAIN_MESSAGE);
Erklärung:
s0, s1 und s2 sind Spiele-Objekte, die ich selber geschrieben habe.
Sie besitzen jeweils 2 Mannschafts-Objekte, die ich mir mit getMan1() oder getMan2() wieder geben lassen kann.
Jedes dieser Mannschafts-Objekte, die ich auch selber geschrieben habe, besitz einen String Spieler, den ich mir mit getSpieler() wieder geben lassen kann.

Vorhin habe ich eine andere Variante ausprobiert:
Java:
JOptionPane.showMessageDialog(null, "Das nächste Spiel ist: " + "\n"
                    + s0.getMan1().getSpieler() + " gegen " + s0.getMan2().getSpieler(),
                    "", JOptionPane.PLAIN_MESSAGE);
Erklärung:
Die Legende ist die Selbe wie bei dem ersten Codeschnippsel.

Dabei bekomme ich keinen Fehler. Die Fehler tauchen aber erst auf, wenn ich das Programm audführe und nicht in der Programmierumgebung. Dies hat mich ein wenig Verwirrt. Aber ich würde gerne die erste Variante verwenden. Also woran liegt der NullPointerException und wie würde ich es hinbekommen, dass die erste Variante funktioniert?

Software die ich benutze:
Windows 7 64-Bit
IntelliJ zum eigentlichen Programmieren und
BlueJ zum builden der jar und zum beheben der letzten Fehler.
Und ich weiß es geht anders, aber diese Variante funktioniert.
Ich hoffe man kann mir helfen.
 

lobnews

Mitglied
ich meinte damit die erste Codezeile den ich kopiert habe also:
Code:
JOptionPane.showMessageDialog(null,"Die nächsten Spiele sind:" + "/n"
 

lobnews

Mitglied
Die habe ich schon geschrieben. BlueJ, welches ich auch zum testen benutze ist etwas sparsam mit den Fehlermeldungen. java.lang.NullPointerException: null
 
C

Camino

Gast
Das ist wirklich nicht sehr aussagekräftig. Führ dein Programm doch mal auf der Konsole aus und schau, was für Fehlermeldungen da kommen.
 

lobnews

Mitglied
Exception in thread "main" java.lang.NullPointerException
at Turniermodule.main(Turniermodule.java:35)
Wenn dir das weiter hilft. Zeile 35 in Turniermodule ist die schon weiter oben genannte Zeile.
 

X5-599

Top Contributor
Es kann eigentlich nur sein das:
s0, s1, s2 sind "null" (Eins oder mehrere davon).

getMan1() oder getMan2() liefern wenigstens einmal "null"

Ansonsten wird auf nichts zugegriffen was eine NullPointerException auslösen würde...
Ich würd mir vor aufruf des OptionPane's mal alle diese Objekte per System.out.println() ausgeben lassen. Dann weisst du bescheid welche davon "null" sind.
 

lobnews

Mitglied
Davon kann keiner null sein, weil ich die jeweils neu in einer for-Schleife definiere. Die Liste, aus der ich die definiere, hat so viele Argumente, wie sie braucht um noch adressiert zu werden, bevor ein nicht vorhandenes Element erreicht. Ausserdem funktionirt die 2. Variante ja also könnte es daran eher nicht liegen (ist nur eine Vermutung, kann aber auch falsch sein). Sollte mehr Code von nöten sein bitte bescheid sagen. Ausserdem wird kein JOptionPane angezeigt, obwohl ich mehr als 3 Spiele habe.
 
Zuletzt bearbeitet:

X5-599

Top Contributor
Wenn das mit s0 funktioniert muss es an s1 oder s2 liegen. Bzw deren getMan1 getMan2 Methoden.

Wie sieht denn die Schleife aus in der du die Objekte erzeugst?
 

lobnews

Mitglied
Wie sieht denn die Schleife aus in der du die Objekte erzeugst?
Java:
for (int i=0; i < spiele.size()-2; i++){
            Spiele s0 = spiele.get(i);
            Spiele s1 = spiele.get(i++);
            Spiele s2 = spiele.get(i+2);
            JOptionPane.showMessageDialog(null, "Die nächsten Spiele sind:" + "/n"
                    + s0.getMan1().getSpieler() + " gegen " + s0.getMan2().getSpieler() + "/n"
                    + s1.getMan1().getSpieler() + " gegen " + s1.getMan2().getSpieler() + "/n"
                    + s2.getMan1().getSpieler() + " gegen " + s2.getMan2().getSpieler(),
                    "", JOptionPane.PLAIN_MESSAGE);
            String ergebnis1 = JOptionPane.showInputDialog( "Bitte die Tore für Mannschaft " + s0.getMan1().getSpieler() + " eingeben.");
            String ergebnis2 = JOptionPane.showInputDialog( "Bitte die Tore für Mannschaft " + s0.getMan2().getSpieler() + " eingeben.");
            int e1 = Integer.parseInt(ergebnis1);
            int e2 = Integer.parseInt(ergebnis2);
            if (e1>e2){
                mannschaften.get(s0.getID1()).setPunkte(3);
            }
            else {
                mannschaften.get(s0.getID2()).setPunkte(3);
            }
            mannschaften.get(s0.getID1()).setTore(e1-e2);
            mannschaften.get(s0.getID2()).setTore(e2-e1);
            s0.setErgebnis(e1-e2);
        }
Erklärung:
spiele ist eine Integer Spiele Map, die ich mir generieren lasse um alle Spiele zu haben.
spiele wird nach dem Füllen mit den Spielen um 2 leere Spiele ergänzt, die dafür sorgen, dass die for Schleife halt kein nichtadressierbares Spiel adressiert.
s0.getID1 und s0.getID2 gibt mir die passende MannschaftsID zurück, unter der ich die Mannschaft in der Integer Mannschaften Map (mannschaften) finde.
die Methode setTore habe ich geändert, das der Wert dazuaddiert wird, genauso bei setTore.
setErgebnis für ein Spiel speichert das Ergebnis, welches für die Rangfolge wichtig sein kann.
Wenn fragen zum Code sind bitte bescheid sagen. Ich war sehr sparsam mit Kommentaren.

Na dann baue doch die 2. Variante Stück für Stück zur ersten aus: immer ein Element aus Variante 1 hinzufügen und ausprobieren.
Wenn die NPE wieder kommt weist Du, dass das letzte hinzugefügte Element die Ursache ist.

Da gibt es ein Problem. Ich führe die for-Schleife mit z.B. 4 Mannschaften also 6 Spielen in der spiele Map und die 2 leeren aus. Dabei wirft der schon beim ersten Durchlauf den Fehler. Ich werde natürlich deinen Vorschlag einmal ausprobieren, aber dies kann ich erst morgen machen.
 

bERt0r

Top Contributor
Sehr schön, das sind typische anfängerfehler: Die Zählervariable in einer For schleife DARF nicht verändert werden.

Angenommen du hast 3 Objekte in der Liste, erster Schleifendurchlauf:
Java:
Spiele s0 = spiele.get(i);          //i=0  zugriff auf 0. Element
            Spiele s1 = spiele.get(i++);   //i=1  zugriff auf 1. Element
            Spiele s2 = spiele.get(i+2);   //i=1  zugriff auf 3. Element
2. Schleifendurchlauf:
Java:
Spiele s0 = spiele.get(i);         //i=2  zugriff auf 2. Element
            Spiele s1 = spiele.get(i++);  //i=3  zugriff auf 3. Element
            Spiele s2 = spiele.get(i+2);  //i=3  zugriff auf 5. Element
Da die Liste nur 3 Einträge (das 0., das 1. und das 2.) hat, wird hier null zurückgeliefert und deine Exception fliegt. Wenn du i++ schreibst, erhöht das die Variable selber um 1, das wird gespeichert und wirkt sich auf deine Zählvariable aus.
 
Zuletzt bearbeitet:

lobnews

Mitglied
Ah ok. So ein dummer Fehler. Darauf bin ich gar nicht gekommen. Aber müsste das Programm denn bei dem Vorhin beschriebenen Fall, also 4 Teams also 6 Spiele + 2 null Spiele macht 8 Einträge in spiele.
Also müsste einfach nur theoretisch die Schleife mindestens einmal durchlaufen, dies tut sie aber nicht einmal. Oder irre ich mich in meiner Vermutung? Dann bitte ich um korrektur.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
J JOptionPane return bei "Abbrechen" AWT, Swing, JavaFX & SWT 13
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
O Timer in JOptionPane anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
O JOptionPane mit JFileDialog AWT, Swing, JavaFX & SWT 5
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
N Swing Mocken von JOptionPane im JUnit-Test AWT, Swing, JavaFX & SWT 3
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JOptionPane AWT, Swing, JavaFX & SWT 1
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
snipesss Hintergrundbild in JOptionPane.showInputDialog? AWT, Swing, JavaFX & SWT 4
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
A Swing JOptionPane.showConfirmDialog, EventQueue wird weiter abgearbeitet AWT, Swing, JavaFX & SWT 2
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
OnDemand JOptionPane AWT, Swing, JavaFX & SWT 2
B JFrame wie JOptionPane.showMessageDialog() AWT, Swing, JavaFX & SWT 2
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
I javascript in javaprogramm JOptionpane -> haengt (embedded Interpreter) AWT, Swing, JavaFX & SWT 2
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
D JOptionPane.QUESTION_MESSAGE Fett darstellen AWT, Swing, JavaFX & SWT 4
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
M Swing Änderungen eines TextFelds und JOptionPane AWT, Swing, JavaFX & SWT 5
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
E Swing setCaretPosition für ein JTextField in einem JOptionPane AWT, Swing, JavaFX & SWT 3
H Swing JOptionPane.showConfirmMessage() wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
R Eingegebenen Text in JOptionPane in andere Klasse weitergeben AWT, Swing, JavaFX & SWT 2
M JOptionPane.showInputDialog abbrechen abfangen? AWT, Swing, JavaFX & SWT 2
Weiti JOptionPane aus einer von JPanel abgeleiteten Klasse aufrufen AWT, Swing, JavaFX & SWT 3
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
G Swing Meldung mit joptionpane information message AWT, Swing, JavaFX & SWT 22
B Swing JOptionPane ohne beep AWT, Swing, JavaFX & SWT 6
A Swing \t im JOptionPane AWT, Swing, JavaFX & SWT 2
G JOptionPane.showConfirmDialog size problem AWT, Swing, JavaFX & SWT 3
S JOptionPane - InitialValue AWT, Swing, JavaFX & SWT 9
S JOptionPane resultat kriegen AWT, Swing, JavaFX & SWT 7
ABstraCT JOptionPane setSize ? AWT, Swing, JavaFX & SWT 6
S JOptionPane.showInputDialog JList erzwingen? AWT, Swing, JavaFX & SWT 4
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
G JOptionPane.showInputDialog(): Texteingabe und Fokus AWT, Swing, JavaFX & SWT 3
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4
F JOptionPane.showMessageDialog AWT, Swing, JavaFX & SWT 2
M JOptionPane.showMessageDialog() mit printStackTace() ? AWT, Swing, JavaFX & SWT 7
QDog JTabbedPane JOptionPane AWT, Swing, JavaFX & SWT 2
K Tabelle nach JOptionPane updaten AWT, Swing, JavaFX & SWT 5
A JOptionPane; CLOSED_OPTION ausschalten AWT, Swing, JavaFX & SWT 5
A Probleme mit einer JOptionPane in einem jar-File AWT, Swing, JavaFX & SWT 14
Z JOptionPane mit einer Methode in dem Vordergrund setzen? AWT, Swing, JavaFX & SWT 6
J JOptionPane Tabs AWT, Swing, JavaFX & SWT 3
G JOptionPane mit andere Farbe AWT, Swing, JavaFX & SWT 8
B Ein JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 6
G komplexes JOptionPane (oder doch JFrame?) AWT, Swing, JavaFX & SWT 2
G JOptionPane mit link zum anklicken AWT, Swing, JavaFX & SWT 4
G JOptionPane AWT, Swing, JavaFX & SWT 6
N Probleme mit eigenem JOptionPane AWT, Swing, JavaFX & SWT 2
A Schließen eines JOptionPane.showConfirmDialog AWT, Swing, JavaFX & SWT 6
B JOptionPane.showInputDialog mit drei ComboBoxen nebeneinande AWT, Swing, JavaFX & SWT 2
S JTextField und JOptionPane - Zeicheneingabe beschränken AWT, Swing, JavaFX & SWT 3
G JOptionPane AWT, Swing, JavaFX & SWT 3
eskimo328 JOptionPane ohne CANCEL Button AWT, Swing, JavaFX & SWT 2
M JOptionPane.showConfirmDialog. Frage zur Cancel_Option AWT, Swing, JavaFX & SWT 2
L JOptionPane AWT, Swing, JavaFX & SWT 4
P JComboBox.addItem erzeugt Layoutproblem mit JOptionPane AWT, Swing, JavaFX & SWT 2
J eigenes JOptionPane ? AWT, Swing, JavaFX & SWT 2
J JOptionPane Buttons AWT, Swing, JavaFX & SWT 4
G Eingabe auslesen mit JOptionPane AWT, Swing, JavaFX & SWT 2
vogella JOptionPane in den Vordergrund bringen AWT, Swing, JavaFX & SWT 2
padde479 JOptionPane AWT, Swing, JavaFX & SWT 3
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
S JOptionPane: methode ShowConfirmDialog ist undefiniert AWT, Swing, JavaFX & SWT 2
S JOptionPane und eine feste Zeilenbreite. AWT, Swing, JavaFX & SWT 4
S JProgressBar zu JOptionPane hinzufügen. AWT, Swing, JavaFX & SWT 8
G JOptionPane AWT, Swing, JavaFX & SWT 3
B Eingabeüberprüfung beim JOptionPane.showInputDialog() AWT, Swing, JavaFX & SWT 3
D Mit JOptionPane einen Link darstellen AWT, Swing, JavaFX & SWT 10
S JOptionPane.showMessageDialog(.) AWT, Swing, JavaFX & SWT 23
S Ein frage zu JOptionPane AWT, Swing, JavaFX & SWT 2
H wie frage ich mehrere buttons von joptionpane ab AWT, Swing, JavaFX & SWT 4
G Link in JoptionPane? AWT, Swing, JavaFX & SWT 3
N JOptionPane mit Html Tags AWT, Swing, JavaFX & SWT 5
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
M Ausgabe mit JOptionPane AWT, Swing, JavaFX & SWT 6
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
S JOptionPane in den Bildschirmvordergrund bringen AWT, Swing, JavaFX & SWT 3
F JOptionPane soll nicht auf ENTER reagieren AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben