Chr*_*ier 29 java layout user-interface swing jframe
我有一个带有按钮的Java swing应用程序,当执行某个操作时会生成一个弹出窗口.我想在弹出窗口的中心点与渲染时父窗口的中心点对齐.如何计算插入setLocation()弹出窗口的x,y坐标?
只是为了澄清.我不想要的行为,setLocationRelativeTo()因为它将弹出窗口的左上角像素设置在父帧的中心像素上.我想将弹出窗口的中心像素设置在父帧的中心像素上.
MB.*_*MB. 57
在JDialog你创建你应该调用pack(),然后再setLocationRelativeTo(parentFrame),再setVisible(true).使用该顺序,JDialog应该以父框架为中心.
如果您不pack()先调用,则设置相对于父项的位置无法正常工作,因为JDialog它不知道该点的大小.它似乎将大小设为0乘0,这导致在对其他答案之一的评论中提到的"父母的中心像素上的弹出窗口的左上角像素"定位.
And*_*son 47
setLocationRelativeTo..这会将弹出窗口的左上角像素设置在父级的中心像素上...
不,不是的!

这个简单示例弹出的3个对话框中的每个对话框都显示为居中,据我所见.我只能猜测代码是在错误的时间调用setLocationRelativeTo 的.
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();
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43445 次 |
| 最近记录: |