我已经使用Java Swing相当一段时间了,但是我从未找到解决此问题的方法。当我创建一个JFrame时,围绕它的窗口实际上比框架小。在下面的图片中,我的JFrame尺寸为800x600。 2条白线在框架的中心400,300处交叉。如您所见,它们不在窗口中心。如果我左右拉动窗口,可以看到框架的某些黑色背景被隐藏了。当显示黑色背景时,您可以看到线条确实在中心交叉(第二张图片)。
为什么会这样工作?我能做些什么来解决这个问题?我制作的游戏中可玩角色位于屏幕中央,因此这给我带来了很多问题。第一张图片较大,因为我将代码留在了后台。如我们所见,它是标准的JFrame创建。
未居中,因为部分框架被隐藏:
在完全显示框时居中:
我的JFrame大小是800x600
您正在做事落后。
框架具有装饰(即标题栏和边框)。进行绘画的面板将添加到框架中,因此它将小于框架的大小。
正确的方法是重写getPreferredSize()
的JPanel
方法,在该方法中进行自定义绘画以返回所需的面板尺寸。
然后将面板添加到框架中,并在框架上调用pack()
方法。现在,框架的尺寸会稍大一些(以适合整个面板和框架装饰),并且您的绘画将是准确的。