3

ボタンを押すと時間のかかる計算を行い、その後新しいウィンドウを開くSWTアプリケーションがあります。計算はUIスレッドで行われるため(これはあまり良くありませんが、レガシーアプリケーションです)、操作中はウィンドウがフリーズします。通常、ジョブの完了時に、新しいウィンドウが正しく再描画されます。しかし、アプリケーションがWindows 7で実行されている場合、Windowsリモートデスクトップを使用してそのコンピューターに接続します。操作が終了した後、新しいウィンドウが正しく描画されないことがあります。これは、次の場合に発生します。

  • 計算ボタンを押す
  • アプリケーションと重なる別のウィンドウに切り替えます
  • アプリケーションに切り替えます(まだ応答していません)
  • 計算が終了するのを待ちます。
  • 新しいウィンドウが開きますが、コンテンツが正しく描画されていません。

ウィンドウを最小化して復元した後、再描画は正しく行われます。

1つの解決策は、リモートデスクトップ設定で最大の詳細を設定することです。しかし、これには帯域幅がかかりすぎます。

SWTバージョン3.4.1、3.6.1、および4.2.1と、XP->Windows7およびWindows7->Windows7からのリモート接続でテストしました。

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

4

2 に答える 2

0

私の問題を解決するものを見つけました:

shell.open()を追加して新しいウィンドウを開いた直後shell.redraw()。もっと前に考えておけば良かった(-_-;)

ブラ

ありがとうございました!

編集:

残念ながら、これはすべての状況でうまくいくわけではありません。タイトル バーに "(応答なし)" というテキストが表示される前にアプリケーションに戻った場合にのみ機能します。タイトルバーに「(応答なし)」が表示されている状態で切り戻すと、動作は以前のままです。

于 2012-12-03T15:46:46.347 に答える
0

paintListener、layout、または redraw を使用してみてください。また、再描画をグラフィカル スレッド (SWT アプリケーションのメイン ループ) に配置することをお勧めします。

于 2012-12-03T12:27:16.860 に答える