На созданном JDialog
вы должны сначала вызвать pack()
, затем setLocationRelativeTo(parentFrame)
, а затем setVisible(true)
. С этим порядком JDialog
должен располагаться в центре на родительском фрейме.
Если вы сначала не вызываете pack()
, тогда установка местоположения относительно родителя не работает должным образом, потому что JDialog
не знает, какой размер в данный момент. Похоже, что размер равен 0 на 0, что приводит к «верхнему левому пикселю всплывающего окна по центральному пикселю родительского» позиционирования, упомянутому в комментарии к одному из других ответов.