Java Swing over Remote Desktop-奇妙で奇妙なGUIのつぶれ


4

この質問は、実際のJavaプログラミングに関するものではないため、StackOverflowよりもSuperUserに当てはまると思いましたが、プログラマーはこの問題に遭遇する可能性が高くなります。とにかく、実際の質問をする前に、いくつかの統計から始めましょう。

ラップトップ:

  • Windows 7 x32
  • 画面解像度1024 x 768; Nvidia GeForce Go 6200
  • アドホックワイヤレスネットワーク経由でデスクトップに接続
  • デスクトップ経由でインターネットにアクセスする

デスクトップ:

  • Windows 7 x64
  • 画面解像度1920 x 1080
  • アドホックワイヤレスネットワーク経由でラップトップに接続
  • ケーブルモデム経由でインターネットにアクセスする

大画面を活用するために、デスクトップからリモートデスクトップ経由でラップトップに接続しています。私はラップトップでプログラミングを行っています(移植性の理由から)。両方のコンピューターがアドホックワイヤレス経由で直接接続されているため、他のすべてはリモートデスクトップ上でスムーズかつ高速に実行されます。

唯一の問題はこれです。JavaSwingアプリはGUIを適切に表示しません。Java Swingアプリケーションを取得し、Eclipseでデバッグしています。アプリを実行したときに得たものは次のとおりです。

ここに画像の説明を入力してください

Javaコントロールパネルでも同じ問題が発生するため、デバッグしているGUIアプリケーションに問題はないようです。

Googleでこれについて高低を検索しました。私が解決策に最も近づいたのはこれです。しかし、悲しいことに、の使用-Dsun.java2d.nodraw=trueはまったく効果がありません。

これは、リモートデスクトップ上でのみ発生します。ローカルで試してみましたが、GUIアプリは正しく表示されます。Java Swingアプリの開発中にリモートデスクトップの使用を停止できるので、これは私にとって大きな問題ではありません。しかし、誰かがこれに遭遇して解決策を見つけたかどうかを知りたいです。

PS:関係するすべてのソフトウェア(Eclipse、Java JREなど)は最新バージョンです。


ディスプレイ、エクスペリエンスなどのオプション(リモートデスクトップ接続)で使用している設定は何ですか?
ロブ

編集ジャーニーマンオタクをありがとう。@マイク:フルスクリーン、最高品質(32ビット)、オーディオ転送オフ、デバイス/リソース共有オフ、高速ブロードバンド、フォントスムージング、デスクトップ構成、ビジュアルスタイル。(以上)
ADTC

これを修正する解決策は見つかりませんでしたが、さらにテストした結果、色深度を「最高品質(32ビット)」よりも低い値に設定するとJava GUIアプリが適切に動作することがわかりました(使用可能なオプションは24ビット、 16ビットと15ビット。)Javaでこの問題が発生するのは、色深度を32ビットに設定したときだけです。リモートデスクトップを使用している人がこれをテストして、それがJava VMのバグかどうかを判断できますか?
ADTC

回答:


2

過去に、Eclipseなどのリモートデスクトップ接続を介して特定のアプリケーションを表示するときに、色深度を最高設定よりも少し低く設定する必要があったことを伝えることができます。

Java VMで発生する可能性のあるバグに関しては、詳細についてこの回答を参照しください。Java仮想マシンを作成できないことに関するエラーメッセージを受け取っていないので、これは事実ではないかと思いますが、まだ確認する価値があります。


奇妙なことに、Eclipse(Indigo SR1)は問題なく動作するようです。コンピューターが32ビットの色深度でRDPディスプレイドライバーを使用する場合、この問題は発生しますが、Nvidiaディスプレイドライバーを使用する場合は発生しないため、これはJava VMのバグであると推測しています。 。おそらく、JVMには、32ビットカラーのRDPドライバーとインターフェイスするときに問題が発生しています(そのようなことが実際に発生する場合)が、24ビット以下では問題ありませんか?
ADTC

特に両方のディスプレイドライバーの仕様を比較した後、それは私を驚かせません(RDP対Nvidia)。JVMの問題はメモリの問題になると思いますが、それは単なる憶測です。とにかく、今ではすべてが正常に動作していますか?
ロブ

「両方のディスプレイドライバーの仕様を比較する」とはどういう意味ですか?RDPディスプレイドライバは、実際のハードウェア用ではありません。これは、リモートデスクトップセッションにログインするときに(リモートクライアントの)Windowsによって使用されるドライバーです。そのため、RDPドライバーの仕様が何を意味するのか理解できません。「現在、すべてが正常に動作していますか?」32ビットの色深度ではありません。より低いものでは部分的にはい(前述のとおり)。ウィンドウフレームがそれより低いものでは基本テーマに切り替わるため、32ビットの色深度を使用したい。PS:JVMはメモリ不足を訴えません。Swing GUIを台無しにします。
ADTC

「コンピューターがRDPディスプレイドライバーを使用しているとき」と「Nvidiaディスプレイドライバーを使用しているとき」のステートメントと混同していました。私の悪い。仕様では、その機能を意味します。以前の投稿を気にせず、あなたの説明を誤解しました。私は調査を続け、何か発見した場合はお知らせします。
ロブ

まあ、私は何も見つけていません。前に述べたように、私は以前にもこのような状況にありました(あなたの失望も理解しています)。ため息、私も本当に高い設定を使用するときにそれが正しく表示されることを望みます。
ロブ

6

デスクトップとRDPクライアントの両方で色を32ビットに変更しただけで、Javaは完璧に見えました。


5

私は同じ問題を抱えていて、色深度を変更してもうまくいきませんでした。この:

-Dsun.java2d.d3d=false

私のために働いているようだ:


これがなぜ投票されたのか定かではありません。私が同じ問題を抱えていて、それが問題を解決したので、ちょうどそれを試しました。私からの+1
StormeHawke

1

Windowsからログオフし、リモートデスクトップに接続したユーザーに再度ログオンした後、同じ問題が修正されました(単にリモートDekstopから切断するのではありません)。


1

Java GUIが完全にペイントできない、つまり、メインウィンドウのすべてのコンテンツが古く、リモートデスクトップで実行すると更新されないという状況がありました。

追加中

-Dsun.java2d.d3d = false

また、私のためにそれを修正しました。


1

コンテナ内でIntelliJまたはEclipseを自動インストールしてDockerイメージを起動しようとしましたが、プライバシー、ライセンス、およびインストールのために常に空白のコンテンツウィンドウが表示されました。RDP接続経由でログオンしたCentOS 7マシンでこれを行いました。

次に、ローカルにインストールされたApplication OpenJdk Privacy Toolにも同じ問題があり、起動しますが、アプリの内容、ボタン、テキスト、空白の画面は表示されません。

私はグーグルで検索し、すべてが役に立たないいくつかの回避策を見つけました。

xhost + initx startx _JAVA_AWT_WM_NONREPARENTING = 1 export DISPLAY = localhost:10.0(およびこれに関するさまざまなソリューション)

私はcompizなどをインストールしようとしました...何も助けになりません!

ソリューション:

RDPを介してCentOSマシンに接続する場合、最大色を設定します。ハイカラー16ビットまでの深さ-それ以上(24ビットではなく、32ビットではない)!次に、Swing / Awt / Javaを使用してこのようなアプリ/プログラムのコンテンツを表示しますが、このコンテンツには問題があります!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.