Java Swing组件在不同的PC上显示不同
我正在尝试使用java swing创建一个迷你游戏,但我找不到任何解决方案来解决一个问题,即使用相同的代码,应用程序在不同的PC上显示不同。它在1366x768分辨率的屏幕上显示,但在全高清屏幕上延伸。 我尝试过在高分辨率屏幕上改变分辨率,尝试过改变图标/字体大小,但没有成功。 我添加了两个屏幕截图,一个是它的外观,另一个是在高分辨率屏幕上。 请注意,出于某种原因,除了拉伸地图外,高屏幕还会放大地图顶部的工具栏 它应该是什么样子的: 它在高分辨率屏幕上的外观:Java Swing组件在不同的PC上显示不同,java,swing,Java,Swing,我正在尝试使用java swing创建一个迷你游戏,但我找不到任何解决方案来解决一个问题,即使用相同的代码,应用程序在不同的PC上显示不同。它在1366x768分辨率的屏幕上显示,但在全高清屏幕上延伸。 我尝试过在高分辨率屏幕上改变分辨率,尝试过改变图标/字体大小,但没有成功。 我添加了两个屏幕截图,一个是它的外观,另一个是在高分辨率屏幕上。 请注意,出于某种原因,除了拉伸地图外,高屏幕还会放大地图顶部的工具栏 它应该是什么样子的: 它在高分辨率屏幕上的外观: 要解决这些问题,您需要找到屏幕的
要解决这些问题,您需要找到屏幕的宽高比。然后可以相应地缩放图像 如果您总是希望图像是方形的,那么您需要确定可用的宽度或高度是否最小,然后将其缩放以适合
你现在正在做的是把整个屏幕拉伸到合适的位置,而不是把你想要的部分全部放进去。此外,如果可用的屏幕大小较大/较小,则应调整图像大小 我猜您的磁贴在
BorderLayout.CENTER
中占据了一个GridLayout
,这是磁贴的默认布局和位置。调整此大小以查看具有固定大小的平铺效果,如下图所示。例如,如果将extendedstate()设置为最大化了这两者,则可能会发生这种情况。您可以在封闭的JFrame
上尝试setresizeable(false)
,以避免分离
我不知道如何使窗户从一开始就得到正确的形状
当您打开封闭的JFrame
时,它“使此窗口的大小符合其子组件的首选大小和布局。”引用的从组成分幅的图标的大小中获取其初始大小,但您可以覆盖以指定不同的结果
之前:
之后:
我想我明白你的意思。如果我将框架设置为可调整大小,并将窗口最小化,我可以使其处于正确的形状,但我不知道如何使窗口从一开始就获得正确的形状。按照我编写代码的方式,我不可能每次更改地图时都执行repack()。