Center JDialog over parent(将 JDialog 居中于父级之上)
问题描述
我有一个带有按钮的 Java swing 应用程序,当执行某个操作时,该按钮会生成一个弹出窗口.我想在渲染时将弹出窗口的中心点与父窗口的中心点对齐.如何计算 x,y 坐标以插入 setLocation()
的弹出窗口?
I have a Java swing application with a button that produces a popup window when a certain action is performed. I'd like to align the center point of the popup window with the center point of the parent window when it is rendered. How can I calculate the x,y coordinates to plug into setLocation()
for the popup window?
只是为了澄清.我不想要 setLocationRelativeTo()
的行为,因为它将弹出窗口的左上角像素设置在父框架的中心像素之上.我想将弹出窗口的中心像素设置在父框架的中心像素上.
Just to clarify. I do not want the behavior of setLocationRelativeTo()
because that sets the top-left pixel of the popup over the center pixel of the parent frame. I want to set the center pixel of the popup over the center pixel of the parent frame.
推荐答案
setLocationRelativeTo
..这将弹出窗口的左上角像素设置在父级的中心像素之上...
setLocationRelativeTo
..this sets the top left pixel of the popup over the center pixel of the parent. ..
不,它没有!
据我所知,这个简单示例弹出的 3 个对话框中的每一个似乎都居中.我只能猜测代码在错误的时间调用了 setLocationRelativeTo
.
Each of the 3 dialogs popped by this simple example appears to be centered as far as I can see. I can only guess that the code is calling setLocationRelativeTo
at the wrong time.
import javax.swing.*;
class CenterTheDialog {
CenterTheDialog() {
for (int ii=1; ii<4; ii++) {
JFrame f = new JFrame("Frame " + ii);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setSize(400,300);
f.setLocationByPlatform(true);
f.setVisible(true);
JDialog d = new JDialog(f);
d.setSize(300,200);
d.setLocationRelativeTo(f);
d.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new CenterTheDialog();
});
}
}
这篇关于将 JDialog 居中于父级之上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 JDialog 居中于父级之上


- Eclipse 的最佳 XML 编辑器 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 转换 ldap 日期 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 获取数字的最后一位 2022-01-01