我正在尝试编写一些代码以使用 Java 将我的主应用程序 JFrame 置于计算机屏幕的中心。为此,我使用下面的代码,它将过程分为两部分,这只是因为我在类的其他地方使用 ScreenHeight 和 ScreenWidth 进行缩放,它们是类的属性。
这段代码在我的笔记本电脑和其他单屏机器上完美运行,但在我的双显示器主机上,它将屏幕放在工作区的中心,每个屏幕上都有一半的对话框(可能很小) . 它在一个方法中,因此我可以在每次对话框大小由程序更改时调用它。
我使用布尔 Width 值将屏幕保持在垂直轴上的同一位置,但将其置于水平轴上。
// Finds the size of the screen
private void find_ScreenSize() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dim = toolkit.getScreenSize();
ScreenHeight = dim.height;
ScreenWidth = dim.width;
}
// Centres the dialogue box within the screen
private void centre_Frame(JFrame Frame, boolean Width) {
find_ScreenSize();
if (!Width) { // if you are not justifying on the X axis
Frame.setLocation(Frame.getLocationOnScreen().x,
((ScreenWidth / 2) - (Frame.getWidth() / 2)));
} else {
Frame.setLocation(((ScreenWidth / 2) - (Frame.getWidth() / 2)),
((ScreenHeight / 2) - (Frame.getHeight() / 2)));
}
}
我希望能够在任何多屏幕计算机上将对话框置于主屏幕/第一个屏幕的中心。我的应用程序中的对话框,我不控制它的位置,设法做我想做的事情,例如我的 JOptionPane 和文件打开和保存对话都完美地工作。
我在 Linux 上进行开发,但该应用程序用于 Linux 和 MS 平台。
搜索这个问题给了我很多上面的例子,但没有告诉我如何做我想做的事,任何帮助将不胜感激。
提前感谢您的帮助。