Вы еще не сказали, необходим ли фрейм по какой-либо причине, или будет ли диалоговое окно, или что-то еще должно быть модальным.
Причина, по которой кадр не отображается в цикле, заключается в том, что вы находитесь в потоке диспетчеризации Swing (поскольку вы выполняете процедуру, реагирующую на щелчок мыши), и пока она не вернется, она не будет работать. обновить экран.
Вы не можете просто вызвать метод в «диалоговом окне фрейма», чтобы получить значение, пока не узнаете, что диалоговое окно установило значение. Я передаю свой вызывающий класс в диалоговое окно в качестве параметра конструктора, а затем код диалога вызывает метод вызывающего класса, когда все это сделано. Если вам нужно знать, когда это произойдет, вам придется рассматривать это как событие в вашем вызывающем классе; Я не могу догадаться, что вам нужно для этого, не зная больше о том, что вы пытаетесь сделать в целом.
Если вам нужно подождать, пока диалог не будет завершен, и не нужно, чтобы пользователь мог что-либо делать, пока это не будет сделано, то вам нужен «модальный» диалог, и я рекомендую взглянуть на JOptionPane и различные варианты диалога для того, что вы хотите сделать. Тогда вызов из вашего класса может быть синхронным, то есть вы можете вызвать диалог, и, когда вызов завершится, диалог будет завершен. Тогда вам не нужно передавать вызывающий класс во фрейм, так как он не должен уведомлять вас, что это сделано; вы знаете, что это сделано, когда ваш вызов завершен, и вы можете вызвать такой метод, который вы уже сделали, чтобы получить желаемое значение.
Кстати, ваш конструктор подкласса JFrame не вызывает super (); Я рекомендую вам сделать это ...
гс