JFrame componentResize 方法在 MacOS 和 Windows 之间的工作方式不同



我们目前正在使用Eclipse做一个游戏项目。我们在我朋友的Mac上启动了这个项目,代码运行正常。如果我们在任何其他windows设备上启动该程序,它就不能正常工作了。代码背后的想法是,窗口总是有相同的分辨率,所以图片和其他东西不会失真。

frmwidthfrmheight是窗口高度和宽度的起始值。

不要被27分散注意力,这是因为宽高比不是完美的16:9。

有人知道为什么它不能在windows上工作吗?

public void componentResized(ComponentEvent e) {
int height = ((JFrame)e.getSource()).getHeight();
int width = ((JFrame)e.getSource()).getWidth();
if(height != frmheight && width != frmwidth){
((JFrame)e.getSource()).setSize(frmwidth, frmheight);

}else if(height != frmheight) {
frmwidth = ((height - 27) / 9) * 16;
frmheight = height;
((JFrame)e.getSource()).setSize(frmwidth, frmheight);
Hintergrund.anpassen(frmheight, frmwidth);
}else {
frmwidth = width;
frmheight = ((width / 16) * 9) + 27;
((JFrame)e.getSource()).setSize(frmwidth, frmheight);
Hintergrund.anpassen(frmheight, frmwidth);
}
((JFrame)e.getSource()).setSize(frmwidth, frmheight);
}

swing组件的外观尊重操作系统的条件。我在使用JTabbedPane时遇到了一些问题。在Windows中,它按预期工作,但在macos中,它的呈现方式不同。可以通过继承相应的ComponentUI类来覆盖swing组件的属性。

最新更新