猿问

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

好的,这类问题有两个部分。

  1. 当我做了一个JFrame,并在上面画一些东西,即使我做了宽度400,并使它,当一个项目击中它(当然,允许一个项目宽度),它会反弹回来。但由于某种原因,它总是会离开屏幕大约10个像素。是否有一种方法来修正它,还是我只需要通过加/减数字来补偿呢?

  2. 我怎么才能得到准确的屏幕中心。所以,如果我JFrame默认为200*200像素,则中心为100*100。(考虑到问题1中的问题)但是,如果有人调整屏幕大小(是的,我希望他们能够调整屏幕大小),重点仍然是中心。因此,如果他们使它全屏,他们的屏幕大小是1200*900,那么中心将是600*450。

我希望这足够清楚


慕丝7291255
浏览 1583回答 3
3回答

沧海一幻觉

从你所说的声音来看,我认为你误解了一个普通的(装饰的)框架的尺寸包括什么。A JFrame由窗口/框架(通常用边框装饰)组成,JRootPane,其中包含JLayeredPane其中包含内容窗格,JMenuBar还有玻璃。这就是为什么不应该覆盖顶级容器的原因之一。paint方法,因为您实际上不会在内容/视图区域内绘制。因此,框架的实际“可画”区域是width - border.width x height - border.height红线表示框架,蓝色表示内容窗格。这提出了一个非常重要的问题,框架的中心在哪里?从框架的角度来看,它是100x100,但从内容窗格的角度来看,它是92x81。取决于您想要的内容,将取决于您将使用的值。为了定位框架,您将希望使用框架中心点,对于绘图,您将希望使用内容窗格。现在,在屏幕上居中帧的最简单的方法就是调用Window#setLocationRelativeTo(null)否则,我建议您使用Timr的解决方案;)

慕娘9325324

你可以用一些简单的方法int ___ = (Jframe.getWidth())/2int ___ = (Jframe.getHeight())/2空白将是您希望位于中心点的值。至于另一个问题,您可以有一些填充或一些东西,以移动项目周围。不看它的代码就不确定。
随时随地看视频慕课网APP

相关分类

Java
我要回答