为什么 JDialog 构造函数不将自身置于指定的所有者组件上?



使用这个JDialog构造函数,在这里我指定了拥有的JFrame实例,我发现JDialog不是集中在它的所有者组件上。相反,它出现在左上角。为了使其工作,我必须在setLocationRelativeTo方法中指定所有者组件。

为什么会这样?

工作环境:

  • 双显示器
  • Windows XP OS
  • JDK 1.6.0_29
请注意,对于JFrame实例,我使用setLocationRelativeTo(null)

我认为JDialog是非常普遍的。如果你想要快速弹出一个常规对话框,那么看看JOptionPane。它有方法可以轻松地创建一个中心JDialog组件或立即弹出一个阻塞对话框窗口。

JDialog dialog = new JOptionPane("message", JOptionPane.INFORMATION_MESSAGE)
    .createDialog(jFrameOwner, "window title");

虽然你可能真的想看看JOptionPane.showXxxDialog静态方法。非常有用和方便。

你可能希望看一下对话教程。java web start应用程序生成的所有对话框都可以使用JOptionPane类生成。

听起来像是一个设计决策。有时你想给对话框一个引用到它的父元素,而不把位置居中。

相关内容

最新更新