如何设置对话框的位置,使其居中于父框架中?

时间:2010-09-07 20:21:57

标签: java swing positioning jdialog

我有一个对话框类,其构造函数如下所示

public SampleDialog(JComponent parent, String title){
    super((Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent), title, false);
    setLocationRelativeTo(parent);
    init();
  }

然而,这会定位对话框,使其右上角位于其父级的中心。我希望对话框的中心位于父组件中心的顶部。我该怎么做呢?我做错了吗?

2 个答案:

答案 0 :(得分:1)

我明白了。我不得不将setLocationRelativeTo(parent)移动到构造函数的末尾。它需要在调用pack()之后调用,我在init方法中调用它。

public SampleDialog(JComponent parent, String title){
    super((Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent), title, false);
    init();
    setLocationRelativeTo(parent);
  }

init(){
  // initialization code goes here
  pack();
}

答案 1 :(得分:0)

我做了类似的事,但我用了

Dimension dim = Toolkit.getDefaultToolkit()

然后使用.getScreenSize,但我相信您可以用它来获取父应用程序的宽度和高度,如下所示:

myApplication.setLocation((int)dim.getWidth(),(int)dim.getHeight());

我希望这会有所帮助。