2017-06-23 83 views
1

我試圖用java swing創建迷你遊戲,並且找不到任何使用相同代碼的問題的解決方案,應用程序在不同的PC上顯示不同。它顯示爲應該在1366x768分辨率屏幕上顯示,但在全屏高清屏幕上顯示。我試圖改變高分辨率屏幕上的分辨率,試圖更改圖標/字體大小,但沒有運氣。 即時添加2個屏幕截圖,1與它如何看起來像和其他高分辨率屏幕上。 注意到,由於某些原因,除了拉伸地圖之外,高屏幕也會放大地圖頂部的工具欄。Swing組件在不同的顯示器上顯示出不同的結果

它是如何想的樣子: ​​

如何它看起來高分辨率屏幕: how it looks on high res screens

回答

1

我猜你的瓷磚佔據了GridLayoutBorderLayout.CENTER,這是JFrame的默認佈局和位置。調整此相關的example以查看具有固定大小的拼貼的效果,如下所示。例如,如果您有setExtendedState()MAXIMIZED_BOTH,則可能發生這種情況。您可以在封閉的JFrame上嘗試setResizable(false)以排除分離。

我不知道如何使窗口從一開始就得到正確的形狀。

當你pack()封閉JFrame,它「使此Window的大小,以適應首選大小和其子組件的佈局。」引用的example從包含圖塊的圖標的SIZE獲取它的初始大小,但是您可以覆蓋getPreferredSize()以指定不同的結果。

前:

image not stretched

後:

image stretched

1

爲了解決你需要找到寬度與高度的屏幕比例這些問題。然後可以相應地縮放圖像。

如果你總是希望圖像是正方形,那麼你會想要找到可用的寬度或高度是否最小,然後將其縮放以適合。

你現在正在做的是將整個屏幕放大並將其拉伸以適應,而不是將所需的部分放在適當的位置並使其適合所有部分。如果可用的屏幕尺寸更大/更小,圖像尺寸也應調整。

+0

我想明白你的意思。如果我將框架設置爲可調整大小,並將窗口最小化,我可以將其設置爲正確的形狀,但是我不知道如何使窗口從一開始就獲得正確的形狀。即時編寫代碼的方式,我沒有可能在每次更改地圖時都進行重新包裝()。 –

相關問題