当前位置: 首页 > 知识库问答 >
问题:

如何获得屏幕的精确中间位置,即使重新调整大小

汝繁
2023-03-14

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

>

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

我希望这足够清楚

共有3个答案

邵诚
2023-03-14

你可以用一些简单的方法

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

空白将是你想要在中心点的值。

至于另一个问题,你可能会有一些填充物或是移动物品的东西。在没有看到代码的情况下不确定。

徐俊楚
2023-03-14

这是我用来在屏幕上居中的JFrame,它只是检索显示器的高度和宽度,然后居中您的框架

public static void moveToCenterScreen(JFrame frame) {
    Toolkit kit = frame.getToolkit();       
    GraphicsDevice[] gs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
    Insets in = kit.getScreenInsets(gs[0].getDefaultConfiguration());
    Dimension d = kit.getScreenSize();

    int max_width = (d.width - in.left - in.right);
    int max_height = (d.height - in.top - in.bottom);   

    frame.setLocation((int) (max_width - frame.getWidth()) / 2, (int) (max_height - frame.getHeight() ) / 2);
}
柳珂
2023-03-14

从你所说的声音来看,我想你误解了正常(装饰)框架的尺寸包括什么。

一个JFrame包含一个窗口/框架(通常用边框装饰),一个JRootPane,它包含一个包含内容窗格的JLayeredPaneJMenuBar和玻璃窗格。

这就是为什么永远不要重写顶级容器paint方法的原因之一,因为您实际上不会在内容/视图区域内进行绘制。

所以,帧的实际“可绘制”区域是它的<代码>宽度-border.widthx高度-border.height

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

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

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

 类似资料:
  • 我正在尝试创建一个程序,它将生成斐波那契序列中的数字,直到它找到序列中的1000位数字。我使用的代码运行良好并提供有效的输出,但是,我在检索每个数字的长度时遇到了麻烦;使用我已将转换为并使用方法获取长度,但是,我发现这并没有给出真正的长度,我看不出为什么。 有没有更好的方法来获取的长度?我已经读到了thBigInteger这个问题:在一个可伸缩的方法中计算小数位数 更新运行程序后输出的文本文本为:

  • 我正在使用Eclipse开发一个新的应用程序,我在Android仿真器中的屏幕大小有问题。即使我创建了一个新的模拟器,屏幕大小也会放大,如图所示。我无法调整它的大小。即使搜索了它,我也找不到任何解决方案。

  • 问题内容: 是否可以在浏览器大小更改时刷新页面?我使用一些样式来创建页面上的区域,并且如果浏览器按比例缩小了版面布局。 也许我可以使用jQuery检测文档大小的变化? 问题答案: 立即更新以供任何人查看。jQuery现在考虑绑定已弃用的函数。 而且proximus的响应方式(至少在Opera / Chrome / Firefox中)有效,即使浏览器只是坐在那里,它也会不断轮询以调整大小。看起来,调

  • 我得到了一个获取屏幕大小的代码,如下所示。 如果我有屏幕宽度,如何利用它来调整精灵到各种屏幕分辨率。对于这个分辨率(2732 x 2048肖像模式ipad pro)我不需要改变精灵大小。但对于所有其他屏幕分辨率相应地改变。

  • 问题内容: 我如何获取元素(例如按钮)的实际屏幕位置?如果我使用getBounds,我将获得相对于父容器而不是屏幕的位置。 问题答案: 你试过了吗?

  • 我想调整一个视图的大小,开始像200px宽100px高,然后“扩展”到填充半个屏幕时,它被点击。它背后的所有视图都应该保持在同一个位置。我只想扩展该视图,填满半个屏幕,重叠当前屏幕上的任何内容。 null