2017-06-23 8 views
1

私はJavaスイングを使用してミニゲームを作成しようとしていますが、同じコードを使用するアプリが異なるPC上で異なって表示されるという問題を解決する方法はありません。それは1366x768の解像度スクリーンのように表示されますが、完全なHDスクリーンで伸びます。 高解像度の画面で解像度を変更しようとしましたが、アイコンやフォントのサイズを変更しようとしましたが運がありませんでした。 imは2つのスクリーンショットを追加します(1つは見た目のように見え、もう1つは高解像度スクリーンに表示されます)。 何らかの理由で、地図を引き伸ばすことに加えて、高画質の画面がツールバーを地図の上にも拡大することに注意してください。それは、高解像度の画面上でどのように見えるか ​​スイングコンポーネントが異なるPCで表示される

how it looks on high res screens

答えて

1

私はあなたのタイルがBorderLayout.CENTERGridLayoutを占めていると推測しています。JFrameのデフォルトのレイアウトと場所です。これに関連するサイズ変更exampleを参照して、固定サイズのタイルの効果を確認します(下図参照)。これは、たとえば、setExtendedState()MAXIMIZED_BOTHの場合に発生します。同封のJFramesetResizable(false)を記入し、分離を防ぐことができます。

ウィンドウを最初から適切な形にする方法はわかりません。

あなたはpack()JFrame囲み、それは「このWindowは、そのサブコンポーネントの推奨サイズおよびレイアウトに合わせてサイズされるようにします。」 exampleは、タイルを構成するアイコンのSIZEから初期サイズを取得しますが、getPreferredSize()を上書きして別の結果を指定することができます。

前:

image not stretched

後:

image stretched

1

あなたが画面のために幅と高さの比率を見つける必要があり、これらの問題を解決するために、それが見えるように仮定方法

。それに応じて画像を拡大縮小することができます。

イメージを常に正方形にしたい場合は、使用可能な幅または高さが最小であるかどうかを確認し、それに合わせて縮尺を調整することをお勧めします。

あなたが現在やっていることは、画面全体を撮り、あなたが好きな部分を取ってその中に収まるのではなく、画面に合わせてストレッチすることです。また、使用可能な画面サイズが大きい/小さい場合は、画像サイズも調整する必要があります。

+0

私はあなたが何を意味するかを理解すると思います。フレームをサイズ変更可能に設定してウィンドウを最小化すると、正しい形状になるようになりますが、ウィンドウを最初から正しい形状にする方法はわかりません。私のコードを書く方法は、私は地図を変更するたびにrepack()を行う可能性はありません。 –

関連する問題