スケーリングされたモニタでPaperclips(SWTの印刷ライブラリ)を使用する際に問題がありますが、フレームワークやEclipse環境とは関係ありません。JavaとEclipseフレームワークで異なるスケーリングが処理される
の例を見てみましょう:
左スケーリング(または100%)なしでのプリントでは、右の同じ印刷は175%のスケーリングとモニター上で開始されます。私はあなたが考えていることを知っています:モニターとその解像度/スケーリングはプリントに影響を与えてはなりません。右はです。
これは悲しいことですが、それは大した問題ではありません。しかし、キッカーが来る:上記のプリントは、プラグインテストとして実行されたJUnitテストケースによって生成されたものです。私が定期的なユニットテストとして実行する場合両方仕事。
明らかに、Eclipse環境では、OSGiコンテキストで起動したときに、別のものが動作していることがわかりました。私はそれが何であるかを調べようとしています。
これは素晴らしいパズルだと思います。
SWTクラスのヒントが必要な場合は、テーブルのファイルScalePrint.java
に絞り込みます(つまり、デモからScalePrint
のインスタンスを削除すると、テーブルが正しく表示され、ヘッダーはまだ間違っています)。
エラーは、4.6または4.5ではなく、Eclipse 4.6にのみ存在することが確認できます(これは、スケーリングをサポートする最初のバージョンであるため、全く驚くことではありません)。スケーリングを無効にするためにVMオプションに-Dswt.autoScale=100
を追加すると、期待通りに機能します。
私はテストケースを追加することができますが、私が言ったように、それはペーパークリップ自体とは関係がないとは本当に思いません。
Eclipseのフレームワーク全体がプレーンJavaアプリケーションで同じコードを実行するのと比較して開始されたときのスケーリングを破ることができますか?