Java Swing:将对话框定位在现有窗口顶部
有人可以展示简单的 Java Swing 代码/Web 资源,当单击 JFrame 的按钮时,它将弹出对话框在现有 JFrame 窗口的顶部居中对齐吗?
Can someone show simple Java Swing code/web resource that will position the popup dialog center-aligned on top of an existing JFrame window when the JFrame's button clicked?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
哦..这非常简单:
假设您有一个包含 JDialog 的 JFrame,并且您希望 JDialog(打开时)位于 JFrame 的正上方。
因此,在 JDialog 构造函数中,您应该具有类似以下内容:
换句话说,将 JFrame 指针传递给您的对话框,然后调用 setLocationRelativeTo(...);方法。
Oh..it's pretty simple:
Say you have a JFrame that contains a JDialog, and you want the JDialog (when opened) to be right on top of JFrame.
So in JDialog constructor, you should have something like:
In other words, pass JFrame pointer to your dialog, and call setLocationRelativeTo(...); method.
我通常调用以下方法:
Javadocs 链接
I usually call the following method:
Link to Javadocs
你说的是哪种弹出对话框?如果您使用 JOptionPane 或类似的组件,请将其父组件设置为 JFrame,它将自动在 JFrame 窗口顶部居中。
如果您要创建自己的 JDialog,则可以使用 JFrame.getLocation() 获取 JFrame 的位置,并使用 JFrame.getSize() 获取其大小。从这里开始,数学就非常简单了;只需计算 JFrame 的中心并减去 JDialog 的宽度/高度的一半即可获得对话框的左上角。
如果您的 JDialog 尚未渲染,JFrame.getSize() 可能会给您零大小。在这种情况下,您可以使用 JDialog.getPreferredSize() 来了解它在屏幕上渲染后的大小。
What kind of popup dialog are you talking about? If you're using a JOptionPane or something similar, set its parent component to the JFrame and it will automatically center on top of the JFrame window.
If you are creating your own JDialog, you can get the JFrame's position using JFrame.getLocation() and its size using JFrame.getSize(). The math is pretty straightforward from there; just compute the center of the JFrame and subtract half the width/height of the JDialog to get your dialog's upper left corner.
If your JDialog has not been rendered yet, JFrame.getSize() might give you a zero size. In that case, you can use JDialog.getPreferredSize() to find out how big it will be once it's rendered on-screen.
如果您想要在窗口上有一个模态且居中的对话框...
在对话框的构造函数中:
要显示对话框(使用按钮等):
If you want a modal and centered dialog on a window ...
In the dialog's constructor:
To display the dialog (using a button, etc.):