为了账号安全,请及时绑定邮箱和手机立即绑定

如何精确地获得屏幕的中间位置,即使当调整大小时也是如此。

如何精确地获得屏幕的中间位置,即使当调整大小时也是如此。

慕丝7291255 2019-07-13 16:14:57
好的,这类问题有两个部分。当我做了一个JFrame,并在上面画一些东西,即使我做了宽度400,并使它,当一个项目击中它(当然,允许一个项目宽度),它会反弹回来。但由于某种原因,它总是会离开屏幕大约10个像素。是否有一种方法来修正它,还是我只需要通过加/减数字来补偿呢?我怎么才能得到准确的屏幕中心。所以,如果我JFrame默认为200*200像素,则中心为100*100。(考虑到问题1中的问题)但是,如果有人调整屏幕大小(是的,我希望他们能够调整屏幕大小),重点仍然是中心。因此,如果他们使它全屏,他们的屏幕大小是1200*900,那么中心将是600*450。我希望这足够清楚
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

从你所说的声音来看,我认为你误解了一个普通的(装饰的)框架的尺寸包括什么。

JFrame由窗口/框架(通常用边框装饰)组成,JRootPane,其中包含JLayeredPane其中包含内容窗格,JMenuBar还有玻璃。

这就是为什么不应该覆盖顶级容器的原因之一。paint方法,因为您实际上不会在内容/视图区域内绘制。

因此,框架的实际“可画”区域是width - border.width x height - border.height

红线表示框架,蓝色表示内容窗格。

这提出了一个非常重要的问题,框架的中心在哪里?从框架的角度来看,它是100x100,但从内容窗格的角度来看,它是92x81。取决于您想要的内容,将取决于您将使用的值。为了定位框架,您将希望使用框架中心点,对于绘图,您将希望使用内容窗格。

现在,在屏幕上居中帧的最简单的方法就是调用Window#setLocationRelativeTo(null)否则,我建议您使用Timr的解决方案;)


查看完整回答
反对 回复 2019-07-13
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

你可以用一些简单的方法

int ___ = (Jframe.getWidth())/2int ___ = (Jframe.getHeight())/2

空白将是您希望位于中心点的值。

至于另一个问题,您可以有一些填充或一些东西,以移动项目周围。不看它的代码就不确定。


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 1581 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信