当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中居中窗口?

如何解决《如何在Java中居中窗口?》经验,为你挑选了5个好方法。

什么是最简单的中心方式java.awt.Window,例如a JFrame或a JDialog



1> Andrew Swan..:

从这个链接

如果您使用的是Java 1.4或更高版本,则可以在对话框,框架或窗口上使用简单方法setLocationRelativeTo(null)来使其居中.


正如@kleopatra在另一个答案中所说,必须在pack()之后调用setLocationRelativeTo(null)才能工作.
如下所述,必须在调用pack()或setSize()之后调用setLocationRelativeTo(null).
Well pack()根据内容和布局设置正确的大小,除非你知道它的大小,否则你不能将某些东西放在中心位置,所以教程让你在居中后打包它确实很奇怪.

2> Dónal..:

这应该适用于所有版本的Java

public static void centreWindow(Window frame) {
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
    int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
    frame.setLocation(x, y);
}



3> Kevin Day..:

请注意,setLocationRelativeTo(null)和Tookit.getDefaultToolkit().getScreenSize()技术仅适用于主监视器.如果您处于多监视器环境中,则可能需要在执行此类计算之前获取有关窗口所在的特定监视器的信息.

有时重要,有时不...

有关如何获取此信息的详细信息,请参阅GraphicsEnvironment javadocs.



4> Dzmitry Sevk..:

在使用setSize(x,y)或使用pack()之后应该调用setLocationRelativeTo(null).



5> Peter Szabo..:

在Linux上的代码

    setLocationRelativeTo(null)

每次我启动它时,在多显示环境中将窗口置于随机位置.和代码

    setLocation((Toolkit.getDefaultToolkit().getScreenSize().width  - getSize().width) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - getSize().height) / 2);

将窗口"切"成两半,将其放置在我的两个显示器之间的确切中心.我使用以下方法来集中它:

private void setWindowPosition(JFrame window, int screen)
{        
    GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] allDevices = env.getScreenDevices();
    int topLeftX, topLeftY, screenX, screenY, windowPosX, windowPosY;

    if (screen < allDevices.length && screen > -1)
    {
        topLeftX = allDevices[screen].getDefaultConfiguration().getBounds().x;
        topLeftY = allDevices[screen].getDefaultConfiguration().getBounds().y;

        screenX  = allDevices[screen].getDefaultConfiguration().getBounds().width;
        screenY  = allDevices[screen].getDefaultConfiguration().getBounds().height;
    }
    else
    {
        topLeftX = allDevices[0].getDefaultConfiguration().getBounds().x;
        topLeftY = allDevices[0].getDefaultConfiguration().getBounds().y;

        screenX  = allDevices[0].getDefaultConfiguration().getBounds().width;
        screenY  = allDevices[0].getDefaultConfiguration().getBounds().height;
    }

    windowPosX = ((screenX - window.getWidth())  / 2) + topLeftX;
    windowPosY = ((screenY - window.getHeight()) / 2) + topLeftY;

    window.setLocation(windowPosX, windowPosY);
}

使窗口显示在第一个显示屏的中央.这可能不是最简单的解决方案.

适用于Linux,Windows和Mac.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有