摆动组件在不同的PC上显示不同

时间:2017-06-23 10:45:10

标签: java swing

我试图使用java swing创建一个迷你游戏,我无法找到使用相同代码的问题的任何解决方案,该应用程序在不同的PC上显示不同。它在1366x768分辨率屏幕上显示它应该显示,但在全高清屏幕上延伸。 香港专业教育学院尝试在高分辨率屏幕上更改分辨率,尝试更改图标/字体大小,但没有运气。 我添加2个截图,1与它看起来像是什么样子,另一个在高分辨率屏幕上。 请注意,出于某种原因,除了拉伸地图外,高屏幕也会放大地图顶部的工具栏。

它看起来如何: how it suppose to look like

它在高分辨率屏幕上的外观如何: how it looks on high res screens

2 个答案:

答案 0 :(得分:1)

要解决这些问题,您需要找到屏幕的宽高比。然后可以相应地缩放图像。

如果您总是希望图像是方形的,那么您可能希望找到可用的宽度或高度是否最小,然后将其缩放以适合。

您目前正在做的是整个屏幕并将其拉伸以适合而不是采取您想要的部分并将其全部装入其中。如果可用的屏幕尺寸更大/更小,也应调整图像尺寸。

答案 1 :(得分:1)

我猜你的瓷砖占据GridLayout BorderLayout.CENTER setExtendedState()JFrame的默认布局和位置。调整此相关example的大小以查看具有固定大小的切片的效果,如下所示。例如,如果您MAXIMIZED_BOTHsetResizable(false),则可能会发生这种情况。您可以在封闭的JFrame上尝试JFrame以排除分离。

  

我不知道如何让窗口从一开始就得到正确的形状。

当您pack()封闭Window时,它会“使SIZE的大小适合其子组件的首选大小和布局。”引用的example从包含图块的图标的private boolean isNotificationServiceRunning() { String enabledNotificationListeners = Settings.Secure.getString(getContentResolver(), "enabled_notification_listeners"); return enabledNotificationListeners != null && enabledNotificationListeners.contains(getPackageName()); } 获取初始尺寸,但您可以覆盖getPreferredSize()以指定不同的结果。

在:

image not stretched

后:

image stretched