Java 如何设置对话框的位置以使其居中';什么是父帧?

Java 如何设置对话框的位置以使其居中';什么是父帧?,java,swing,positioning,jdialog,Java,Swing,Positioning,Jdialog,我有一个对话框类,其构造函数如下 public SampleDialog(JComponent parent, String title){ super((Frame)SwingUtilities.getAncestorOfClass(Frame.class, parent), title, false); setLocationRelativeTo(parent); init(); } 但是,这会定位对话框,使其右上角位于其父对象的中心。我希望对话框的中心位于父零

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

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

但是,这会定位对话框,使其右上角位于其父对象的中心。我希望对话框的中心位于父零部件的中心之上。我该怎么做?我做错什么了吗?

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

Dimension dim = Toolkit.getDefaultToolkit()
然后使用.getScreenSize,但我相信您可以使用它来获得父应用程序的宽度和高度,如下所示:

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

我希望这能有所帮助。

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

Dimension dim = Toolkit.getDefaultToolkit()
然后使用.getScreenSize,但我相信您可以使用它来获得父应用程序的宽度和高度,如下所示:

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

我希望这能有所帮助。

我想出来了。我必须将setLocationRelativeTo(父级)移动到构造函数的末尾。需要在调用pack()之后调用它,我在init方法中调用了pack()

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

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

我想出来了。我必须将setLocationRelativeTo(父级)移动到构造函数的末尾。需要在调用pack()之后调用它,我在init方法中调用了pack()

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

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