1

我有一个带有如下构造函数的对话框类

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

但是,这会定位对话框,使其右上角位于其父级的中心。我希望对话框的中心位于父组件的中心之上。我该怎么做呢?难道我做错了什么?

4

2 回答 2

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();
}
于 2010-09-07T20:33:33.803 回答
0

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

Dimension dim = Toolkit.getDefaultToolkit()

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

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

我希望这有帮助。

于 2010-09-07T20:25:06.170 回答