为什么JDialog构造函数不在指定的所有者组件上?

时间:2011-12-12 13:41:26

标签: java swing centering jdialog

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

为什么会这样?

工作环境:

  • 双显示器
  • Windows XP操作系统
  • JDK 1.6.0_29

请注意,对于JFrame实例,我使用setLocationRelativeTo(null)

2 个答案:

答案 0 :(得分:3)

我认为

JDialog非常普遍。如果您想快速弹出常规对话框,请查看JOptionPane。它有方法可以轻松创建居中的JDialog组件或立即弹出阻止对话框窗口。

e.g。

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

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

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

答案 1 :(得分:2)

听起来像是一个设计决定。有时您希望为对话框提供对其父级的引用,而不是将位置置于其中心。