Java Swing über Remote Desktop - Seltsames, komisches GUI-Squashing

14754
ADTC

Ich dachte, dass diese Frage für SuperUser mehr passt als für StackOverflow, da es nicht um die eigentliche Java-Programmierung geht, obwohl Programmierer das Problem wahrscheinlich wahrnehmen werden. Lassen Sie mich trotzdem mit einigen Statistiken beginnen, bevor ich die eigentliche Frage stelle:

Laptop:

  • Windows 7 x32
  • Bildschirmauflösung 1024 x 768; Nvidia GeForce Go 6200
  • Verbindung zum Desktop über ein drahtloses Ad-hoc-Netzwerk
  • Zugang zum Internet via Desktop

Desktop:

  • Windows 7 x64
  • Bildschirmauflösung 1920 x 1080
  • Verbunden mit einem Laptop über ein drahtloses Ad-hoc-Netzwerk
  • Zugang zum Internet über Kabelmodem

Ich verbinde mich über Remote Desktop von meinem Desktop aus mit meinem Laptop, um den großen Bildschirm zu nutzen. Ich programmiere auf meinem Laptop (aus Gründen der Portabilität). Alles andere läuft reibungslos und schnell über Remote Desktop, da beide Computer direkt über das Ad-hoc-Funknetz verbunden sind.

Das einzige Problem ist folgendes: Java Swing-Apps zeigen die GUI nicht richtig an. Ich habe eine Java-Swing-Anwendung erworben und debugge sie in Eclipse. Hier ist was ich bekam, als ich die App startete:

enter image description here

Anscheinend ist an der GUI-Anwendung, die ich debugge, anscheinend kein Fehler aufgetreten, da das Java Control Panel das gleiche Problem aufweist.

Ich habe in Google darüber und da gesucht; die nächste, die ich zu einer Lösung gekommen ist dies . Aber leider hat die Verwendung von -Dsun.java2d.nodraw=truekeine Wirkung.

Dies geschieht nur über Remote Desktop. Ich habe es lokal probiert und die GUI-Apps werden richtig angezeigt. Dies ist kein Dealbreaker für mich, da ich bei der Entwicklung von Java Swing-Apps auf die Verwendung von Remote Desktop verzichten kann. Ich würde jedoch gerne wissen, ob jemand dies gefunden hat und eine Lösung gefunden hat.

PS: Bei der gesamten Software (Eclipse, Java JRE usw.) handelt es sich um die neuesten Versionen.

4
Welche Einstellungen verwenden Sie unter Anzeige, Erfahrung usw. unter Optionen (Remotedesktopverbindung)? Rob vor 12 Jahren 0
Vielen Dank für die Bearbeitung Journeyman Geek. @Mike: Vollbild, Höchste Qualität (32 Bit), Audioübertragung ** aus **, Geräte- / Ressourcenfreigabe ** vollständig aus **, High-Speed-Breitband, Schriftartenglättung, Desktop-Komposition, visuelle Stile. (Das ist alles) ADTC vor 12 Jahren 0
Ich habe keine Lösung gefunden, um dies zu korrigieren, aber nach weiteren Tests habe ich festgestellt, dass Java-GUI-Apps ordnungsgemäß funktionieren, wenn ich die Farbtiefe auf einen Wert niedriger als "Höchste Qualität (32 Bit)" setze. (Die verfügbaren Optionen sind 24 Bit.) 16 Bit und 15 Bit.) Java hat dieses Problem nur, wenn ich die Farbtiefe auf 32 Bit eingestellt habe. Könnte jemand, der Remote Desktop verwendet, dies bitte testen, um festzustellen, ob es sich um einen Fehler in Java VM handelt? ADTC vor 12 Jahren 0

6 Antworten auf die Frage

6
RJ Bobin

Ich habe einfach die Farbe in 32 Bit geändert, sowohl in meinem Desktop als auch in meinem RDP-Client. Java sah perfekt aus.

Habe den Trick für mich gemacht! Ich danke dir sehr! Arturas M vor 7 Jahren 0
5
JayFar

Ich hatte das gleiche Problem und das Ändern der Farbtiefe funktionierte nicht für mich. Diese:

-Dsun.java2d.d3d=false 

schien für mich zu arbeiten:

Nicht sicher, warum dies abgelehnt wurde. Ich habe es gerade ausprobiert, weil ich das gleiche Problem hatte und das Problem behoben wurde. +1 von mir StormeHawke vor 10 Jahren 0
2
Rob

Ich kann Ihnen sagen, dass ich in der Vergangenheit die Farbtiefe etwas niedriger als die höchste Einstellung einstellen musste, wenn bestimmte Anwendungen über eine Remotedesktopverbindung wie Eclipse angezeigt werden.

Weitere Informationen zu einem möglichen Fehler in der Java VM finden Sie in dieser Antwort . Ich bezweifle sehr, dass dies der Fall ist, da Sie keine Fehlermeldungen erhalten haben, die darauf hinweisen, dass keine Java Virtual Machine erstellt werden kann. Aber es lohnt sich trotzdem!

Seltsamerweise scheint Eclipse (Indigo SR1) gut zu laufen. Ich würde immer noch an meiner Spekulation festhalten, dass dies ein Fehler in Java VM ist, da dieses Problem auftritt, wenn der Computer den RDP-Anzeigetreiber in 32-Bit-Farbtiefe verwendet. Wenn er jedoch den Nvidia-Anzeigetreiber verwendet, tritt er nicht auf . Möglicherweise hat die JVM Probleme beim Anschluss an den RDP-Treiber in 32-Bit-Farbe (wenn tatsächlich etwas in der Art passiert), obwohl bei 24-Bit und darunter kein Problem auftritt? ADTC vor 12 Jahren 0
Das überrascht mich nicht (RDP vs. Nvidia), vor allem nach einem Vergleich der Spezifikationen beider Display-Treiber. Ich denke, das Problem mit der JVM wäre ein Gedächtnisproblem, aber das ist auch nur Spekulation. Egal, funktioniert jetzt alles richtig? Rob vor 12 Jahren 0
Was meinen Sie damit, die Spezifikationen beider Displaytreiber zu vergleichen? Der RDP-Anzeigetreiber ist nicht für echte Hardware geeignet. Es ist ein Treiber, der von Windows (Remote-Client) verwendet wird, wenn ich mich bei einer Remote-Desktopsitzung anmelde. Ich verstehe also nicht, was Sie mit den Spezifikationen des RDP-Treibers meinen. "Funktioniert jetzt alles richtig?" ** Nein ** in 32 Bit Farbtiefe. Teilweise ja etwas niedriger (wie vorher erklärt). Ich möchte die 32-Bit-Farbtiefe verwenden, da die Fensterrahmen in etwas niedrigerem Format in das grundlegende Thema wechseln. PS: Die JVM beklagt kein Gedächtnisdefizit. Die Swing-Benutzeroberfläche wird dadurch nur beschädigt. ADTC vor 12 Jahren 0
Ich war verwirrt mit Ihren Aussagen "Wenn der Computer den RDP-Bildschirmtreiber verwendet" und "Wenn er den Nvidia-Bildschirmtreiber verwendet" ... es hörte sich an, als ob Sie sie austauschen würden oder so. Mein Fehler. Mit Spezifikationen meine ich ihre Fähigkeiten. Abgesehen von meinem vorherigen Beitrag habe ich Ihre Erklärung falsch interpretiert. Ich werde weiter recherchieren und ich werde Sie wissen lassen, wenn ich etwas finde. Rob vor 12 Jahren 0
Ich habe nichts gefunden. Wie bereits gesagt, war ich zuvor in Situationen (ich verstehe auch Ihre Enttäuschung) wie zuvor und zumindest wusste ich, dass mein Programm ordnungsgemäß lief, als ich die Einstellungen auf die Tiefe reduzierte. _Sigh_, auch ich wünschte wirklich, es würde korrekt angezeigt, wenn höhere Einstellungen verwendet werden. Rob vor 12 Jahren 0
Es ist in Ordnung, Mike, danke für deine Zeit und Mühe. Wie ich schon sagte, ist das für mich keine große Sache. Ich frage mich nur, ob es eine Lösung gibt. Ich kann, wenn nötig, mit 24-Bit-Farbtiefe leben, auch wenn mir das nicht gefällt. (Seltsam nennen sie es immer noch "True Color") ADTC vor 12 Jahren 0
1
user43308

My same problem was fixed after I logged off windows and logged on again for the user connected to Remote Desktop (NOT merely disconnecting from Remote Dekstop).

1
user325595

Ich hatte eine Situation, in der meine Java-GUI nicht vollständig malen konnte, dh der gesamte Inhalt des Hauptfensters war veraltet und würde nicht aktualisiert, wenn er auf einem Remote-Desktop ausgeführt wurde.

Hinzufügen

-Dsun.java2d.d3d = false

hat es auch für mich behoben.

0
user946062

Ich habe versucht, ein Docker-Image mit der automatischen Installation von IntelliJ oder Eclipse innerhalb des Containers zu starten, aber ich habe immer ein leeres Inhaltsfenster für Datenschutz, Lizenz und Installation erhalten. Ich habe dies auf einem über RDP-Verbindung angemeldeten CentOS 7-Computer durchgeführt.

Dann habe ich gesehen, dass das lokal installierte Application OpenJdk Privacy Tool das gleiche Problem hat. Es startet, aber es zeigt nicht den Inhalt der App, keine Schaltflächen, keinen Text ... nur einen leeren weißen Bildschirm.

Ich habe über Google gesucht und finde einige Problemumgehungen, die nicht alle helfen.

xhost + initx startx _JAVA_AWT_WM_NONREPARENTING = 1 export DISPLAY = localhost: 10.0 (und verschiedene weitere Lösungen dazu)

Ich habe versucht, Compiz zu installieren und so weiter ... nichts hilft!

Die Lösung:

Bei Verbindung über RDP zur CentOS-Maschine stellen Sie die Farbe max ein. Tiefe zu High Color 16 Bit - nicht mehr (nicht 24 Bit, nicht 32 Bit)! Dann sehen Sie den Inhalt solcher Apps / Programme unter Verwendung von Swing / Awt / Java, was zu Problemen führt!