JOptionPane komplett leeres Fenster

Hallo liebes Forum,

ich bin jetzt hier gelandet, da ich mir absolut nicht mehr zu helfen weiß und den Fehler einfach nicht finde.
Folgendes Problem:
Ich will den JOptionPane.showInputDialog kennenlernen, deswegen habe ich mir einen kleinen Code dafür geschrieben. Laut Eclipse ist auch alles fehlerfrei. Trotzdem erscheint das Fenster ohne irgendeinen Inhalt und auch nur für ca. 2 Sekunden. Einen Screenshot habe ich euch angehängt.

Ich bin noch sehr neu in Java, gerade in den Anfängen. Ich habe schon das Problem gegoogelt aber gar nichts dazu gefunden. Deswegen hoffe ich, dass ihr mit weiterhelfen könnt.

Vielen Dank schon mal im Vorraus!
 

Anhänge

Ich bin noch sehr neu in Java, gerade in den Anfängen.
  1. (nicht nur) ich rate dringend davon ab, als Anfänger mit GUI-Programmierung anzufangen. Dafür brauchst Du Grundkenntnisse, die Du am besten ohne GUI erwirbst. Ein JOptionPane für einfache Eingaben und Ausgaben kann man aber durchaus als Anfänger noch verwenden.
  2. Allgemeiner Hinweis: in Java ist so gut wie alles fein säuberlich und äußerst ausführlich dokumentiert. Die Dokumentation der API (Programmierschnittstelle) ist als Referenz praktisch immer und ständig zu verwenden. Für Java 8 findest Du sie unter https://docs.oracle.com/javase/8/docs/api/, für Java 11 unter https://docs.oracle.com/en/java/javase/11/docs/api/index.html
  3. Du kannst (und solltest) Code hier in Code-Tags einstellen. Wenn Du hier im Editor

    [code=Java]System.out.println()[/code]

    eingibst, erhältst Du
    Java:
    System.out.println();
    also eine formatierte Ausgabe, die Einrückungen beibehält und keine Zeichen verschluckt.
  4. Warum Dein Text nicht angezeigt wird, ist schwer zu sagen. Es könnte ein Problem bzgl. Java, Eclipse, dem Event Dispatch Thread (das ist einer der Gründe, warum man als Anfänger keine GUIs programmieren sollte) oder auch dem Grafikkarten-Treiber sein.
  5. Als erstes solltest Du Dir mal, ganz unabhängig vom Problem, ein aktuelles Java besorgen (OpenJDK 11+). Bei Java 9 weiß ich von Bugs bzgl. der Darstellung (betrifft zwar "nur" die Koordinaten aber....)
  6. Bei Eclipse hört man öfter mal vom Problemen, was das automatische Übersetzen betrifft. Ggf. mal mit einem neuen Workspace neu starten, vielleicht hilfts (mehr kann ich dazu nicht sagen, weil ich kein Eclipse benutze)
  7. Du kannst den Code auch in der Shell (Eingabeaufforderung) per javac übersetzen und per java manuell ausführen.
  8. Alternativ: in bin-Ordner des JDKs gibt es jshell. Wenn Du das startest und dort die Zeile javax.swing.JOptionPane.showInputDialog("Test"); eingibst, sollte etwas kommen.
  9. Dann kannst Du testen, ob es was nutzt, den JOptionPane im Event Dispatch Thread auszuführen:
Java:
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

public class Test {
    void run() {
        String antwort = JOptionPane.showInputDialog("What's your name?");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 
Hallo und vielen Dank erstmal für deine sehr ausführliche Antwort!

(nicht nur) ich rate dringend davon ab, als Anfänger mit GUI-Programmierung anzufangen. Dafür brauchst Du Grundkenntnisse, die Du am besten ohne GUI erwirbst. Ein JOptionPane für einfache Eingaben und Ausgaben kann man aber durchaus als Anfänger noch verwenden.
Ja, da hast du vermutlich recht. Ich arbeite mich gerade mithilfe des Buches "Programmieren lernen mit Java" von Rheinwerk Computing in das Thema ein. Dort hat man am Anfang auch erst mit der Shell und javac gearbeitet. Dort wird für simple Eingaben auch schon JOptionPane genutzt. Damals hat das mit der Eingabeaufforderung noch geklappt. Jetzt habe ich es gerade auch nochmal "manuell" probiert und es erscheint wieder ein leeres Input-Fenster wie oben. Damit scheint der Fehler nicht an Eclipse zu liegen.

Als erstes solltest Du Dir mal, ganz unabhängig vom Problem, ein aktuelles Java besorgen (OpenJDK 11+). Bei Java 9 weiß ich von Bugs bzgl. der Darstellung (betrifft zwar "nur" die Koordinaten aber....)
Neues JDK (12.0.2) ist installiert, Fehler leider weiterhin vorhanden.

Alternativ: in bin-Ordner des JDKs gibt es jshell. Wenn Du das startest und dort die Zeile javax.swing.JOptionPane.showInputDialog("Test"); eingibst, sollte etwas kommen.
Ebenfalls gleicher Fehler :(

Dann kannst Du testen, ob es was nutzt, den JOptionPane im Event Dispatch Thread auszuführen:
Habe ich getestet, bekomme aber leider die Fehlermeldung "Lambda expressions are allowed only at source level 1.8 or above".


Ich verstehe es echt nicht, da es früher mit "manueller" Eingabe per shell auch geklappt hat, jetzt aber sowohl in Eclipse als auch in der shell nicht mehr funktioniert. Das bedeutet es muss irgendetwas geändert worden sein (sei es durch mich oder ein Update), was dieses Problem hervorgerufen hat. Und ich kann mir wirklich nicht vorstellen, was das gewesen sein soll. Ich habe soweit ich mich erinnern kann nichts derartiges verändert. Aber wie sooft, das Problem sitzt vermutlich doch zwischen Stuhllehne und Bildschirm nur merkt es nicht, dass man es das Problem ist ;)

In dem Sinne hoffe ich noch auf weitere Lösungsvorschläge!
 
Habe ich getestet, bekomme aber leider die Fehlermeldung "Lambda expressions are allowed only at source level 1.8 or above".
In Eclipse, oder? Schau mal in den Projekteigenschaften nach, da müsstest Du irgendwo die Java Version einstellen können. Compliance Level, Source/Target Version - irgendsowas. Und bei der Gelegenheit kannst Du gleich mal schauen, ob das richtige JDK hinterlegt ist.
 
Es war die 12.0.2 hinterlegt, habe jetzt auf 1.8 geändert. Jetzt funktioniert dein Code, allerdings bleibt der Fehler mit dem leeren JOptionPane-Fenster. :/
 
Passende Stellenanzeigen aus deiner Region:

Oben