Как мне установить позицию диалога, чтобы он центрировался в родительской рамке? - PullRequest
1 голос
/ 08 сентября 2010

У меня есть класс диалога с конструктором, подобным следующему

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

Однако, это помещает диалог так, чтобы его верхний правый угол находился в центре его родителя. Мне бы хотелось, чтобы центр диалога располагался поверх центра родительского компонента. Как мне это сделать? Я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Я понял это.Мне пришлось переместить 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();
}
0 голосов
/ 08 сентября 2010

Я сделал что-то похожее на это, но я использовал

Dimension dim = Toolkit.getDefaultToolkit()

, а затем использовал .getScreenSize, но я уверен, что вы можете использовать его, чтобы получить ширину и высоту вашего родительского приложения с чем-то вроде этого:

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

Надеюсь, это поможет.

...