Optymalna lokalizacja modalnego JDialog, aby uniknąć zablokowania

Aplikacja My Swing musi pokazywać użytkownikowi modalne okno dialogowe. Przepraszamy za nie opublikowanie SSCCE.

topContainer może byćJFrame lubJApplet.

private class NewGameDialog extends JDialog {
     public NewGameDialog () {
         super(SwingUtilities.windowForComponent(topContainer), "NEW GAME", ModalityType.APPLICATION_MODAL);

         //add components here

         getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

         //TODO:
         setSize(new Dimension(250, 200));
         setLocation(650, 300);
     }
}

Otwieram okno dialogowe tak jak w przypadku zdarzenia sieciowego

SwingUtilities.invokeLater(new Runnable() {
     @Override
     public void run() {
         NewGameDialog dialog = new NewGameDialog();
         dialog.setVisible(true);
     }
});

Problem polega na ustawieniu optymalnej lokalizacji dla mojego okna dialogowego.

1) Jeśli jest ustawiona jako wartość bezwzględna, a ja przenoszę ramkę aplikacji na drugi ekran, okno dialogowe jest wyświetlane na pierwszym ekranie, który jest dziwny.

2) Jeśli ustawiono wartość względną na JFrame, może się wydawać, że użytkownik przesunął ramkę aplikacji poza ekran, a relatywnie zlokalizowane okno dialogowe nie będzie widoczne dla użytkownika. A ponieważ jest modalna, gra utknie.

Jakie jest najlepsze rozwiązanie biorąc pod uwagę dwie wyżej wymienione kwestie?

questionAnswers(4)

yourAnswerToTheQuestion