題 遠程桌面上的Java Swing - 奇怪,奇怪的GUI壓縮


我認為這個問題比StackOverflow更適合SuperUser,因為它不是關於實際的Java編程,儘管程序員可能更容易遇到問題。無論如何,在我提出實際問題之前,讓我先從一些統計數據開始:

筆記本電腦:

  • Windows 7 x32
  • 屏幕分辨率1024 x 768; Nvidia GeForce Go 6200
  • 通過ad-hoc無線網絡連接到桌面
  • 通過桌面訪問互聯網

桌面:

  • Windows 7 x64
  • 屏幕分辨率1920 x 1080
  • 通過ad-hoc無線網絡連接到筆記本電腦
  • 通過電纜調製解調器訪問Internet

我正在通過我的筆記本電腦連接 遠程桌面 從我的桌面利用大屏幕。我正在我的筆記本電腦上進行編程(出於便攜性的原因)。由於兩台計算機都通過ad-hoc無線直接連接,因此其他所有內容都可通過遠程桌面平穩快速地運行。

唯一的問題是:Java Swing應用程序無法正確顯示GUI。我獲得了一個Java Swing應用程序,我正在Eclipse中進行調試。這是我運行應用程序時得到的:

enter image description here

顯然,我正在調試的GUI應用程序似乎沒有任何問題,因為 Java控制面板 表現出同樣的問題。

我在谷歌搜索過這個問題;我最接近解決方案的是 這個。但遺憾的是,使用 -Dsun.java2d.nodraw=true 完全沒有效果。

這只發生在遠程桌面上。我在本地嘗試過,GUI應用程序顯示正常。這對我來說不是一個破壞者,因為我可以在開發Java Swing應用程序時停止使用遠程桌面。但是,我想知道是否有人遇到過此問題並找到了解決辦法。

PS:所涉及的所有軟件(Eclipse,Java JRE等)都是最新版本。


4
2018-02-12 09:05


起源


在選項(遠程桌面連接)下,您在顯示,體驗等下使用了哪些設置? - Rob
感謝編輯Journeyman Geek。 @Mike:全屏,最高質量(32位),音頻傳輸 離,設備/資源共享 完全關閉,高速寬帶,字體平滑,桌面組合,視覺風格。 (就這樣) - ADTC
我沒有找到解決方案來糾正這個問題,但經過進一步測試,我發現當我將顏色深度設置為低於“最高質量(32位)”的任何值時,Java GUI應用程序都能正常工作(可用選項為24位, 16位和15位。)只有當我將顏色深度設置為32位時,Java才會出現此問題。 有人可以使用遠程桌面測試這個,以確定它是否是Java VM中的錯誤? - ADTC


答案:


我可以告訴你,在過去通過遠程桌面連接(如Eclipse)查看某些應用程序時,我不得不將顏色深度設置為低於最高設置。

關於可能的 Java VM中的錯誤,參考 這個答案 欲獲得更多信息。我非常懷疑這是因為你沒有收到任何關於無法創建Java虛擬機的錯誤消息......但它仍然值得一試!


2
2018-02-14 13:44



奇怪的是,Eclipse(Indigo SR1)似乎運​​行得很好。我仍然堅持我的猜測,這是Java VM中的一個錯誤,因為當計算機使用32位顏色深度的RDP顯示驅動程序時,會出現此問題,但是當它使用Nvidia顯示驅動程序時,它不會發生。也許JVM在與32位顏色的RDP驅動程序接口時出現問題(如果實際發生這種情況),而24位和更低的問題沒有問題? - ADTC
這並不讓我感到驚訝(RDP vs. Nvidia),特別是在比較兩個顯示驅動程序的規格之後。我認為JVM的問題將是內存問題,但那又是猜測。無論如何,現在一切正常嗎? - Rob
你是什​​麼意思“比較兩個顯示驅動程序的規格”? RDP顯示驅動程序不適用於任何實際硬件。當我登錄到遠程桌面會話時,它是Windows(遠程客戶端)使用的驅動程序。所以我不明白你的RDP驅動程序的規格是什麼意思。 “現在一切都運轉正常嗎?” 沒有 在32位顏色深度。在任何更低的部分是肯定的(如前所述)。我想使用32位顏色深度,因為窗口框架在任何更低的位置切換到基本主題。 PS:JVM不會抱怨任何內存不足。它只是搞砸了Swing GUI。 - ADTC
我對你的陳述“當計算機使用RDP顯示驅動程序”和“當它使用Nvidia顯示驅動程序時”感到困惑......這聽起來好像是你把它們換成了什麼東西。我的錯。按規格我的意思是他們的能力。沒關係我以前的帖子,我誤解了你的解釋。我將繼續研究,如果我找到任何東西,我會告訴你。 - Rob
好吧,我還沒找到任何東西。如前所述,我之前遇到過這種情況(我也理解你的失望),至少我知道當我調低深度設置時我的程序運行正常。 嘆,我也非常希望在使用更高的設置時能正常顯示。 - Rob


我只是在桌面和RDP客戶端中將顏色更改為32位,Java看起來很完美。


6
2018-06-23 14:30



對我有把戲!非常感謝! - Arturas M


我有同樣的問題,改變顏色深度對我不起作用。這個:

-Dsun.java2d.d3d=false

似乎對我有用:


5
2017-07-09 15:35



不知道為什麼這是低估的。我剛嘗試過,因為我遇到了同樣的問題而且解決了這個問題。來自我的+1 - StormeHawke


我註銷Windows並再次登錄連接到遠程桌面的用戶(不僅僅是從遠程Dekstop斷開連接)後修復了同樣的問題。


1
2018-01-03 18:12





我遇到的情況是我的Java GUI無法完全繪製,也就是說,主窗口的所有內容都是陳舊的,在遠程桌面上運行時不會刷新。

添加

-Dsun.java2d.d3d = FALSE

也為我修好了。


1
2018-05-21 19:31





我嘗試在Container中自動安裝IntelliJ或Eclipse啟動Docker鏡像,但我總是有一個空白的內容窗口,用於隱私,許可和安裝。我在通過RDP連接登錄的CentOS 7機器上完成了這項工作。

然後我看到本地安裝的應用程序OpenJdk隱私工具有同樣的問題,它啟動但它沒有顯示應用程序的內容,沒有按鈕,沒有文本...只是一個空白的白色屏幕。

我通過谷歌搜索並找到一些所有沒有幫助的解決方法。

xhost + INITX 運行startx _JAVA_AWT_WM_NONREPARENTING = 1 export DISPLAY = localhost:10.0(以及不同的更多解決方案)

我確實試過安裝compiz等......沒什麼用的!

解決方案:

通過RDP連接到CentOS機器時,設置Color max。深度到高色16位 - 不多(不是24位,不是32位)!然後,您將看到使用Swing / Awt / Java的此類應用程序/程序的內容,其中包含此內容顯示的問題!


0
2017-09-20 11:33