Обратите внимание, что ваш вопрос является классическим вопросом типа " XY Problem ", где вы задаете вопрос "как мне сделать X", когда лучшим решением является "Не делай X, а вместо этого делай Y".Другими словами, вы определенно не хотите распоряжаться оконным объектом верхнего уровня, таким как JFrame, в своем конструкторе, как вы пытаетесь это сделать.
Я думаю, что вы хотитесделать (предположение) значит
- проверить конфигурацию вещей
- Если все в порядке, отобразить основной графический интерфейс пользователя
- Если не в порядке, отобразить окно, котороепозволяет пользователю переустанавливать конфигурацию
- Ключевой момент: затем повторно проверить, если конфигурация в порядке,
- И если так, то отобразить основной графический интерфейс пользователя
- Повторить какобязательно.
Если это так, то я бы использовал цикл while, чтобы показать окно заданной конфигурации и выйти из цикла, если конфигурация в порядке, но также и позволить пользователю выйти из цикла, если он просто хочетвыйти или не могу установить конфигурацию ОК.Примерно так:
// configurationGood: true if config is good
// justQuit: true if the user has had enough and wants to quit
while (!configurationGood && !justQuit) {
// create configuration dialog here
// calling constructors, and all
// use a **modal** dialog here
// change configurationGood and/or justQuit values in here
}
if (!justQuit) {
// create and display main application here
}
Обратите внимание, что
- этот код вызывается не в каком-либо конструкторе окон GUI, а перед отображением GUI
- .-конфигурированное окно конфигурации должно быть не JFrame, а скорее модальным JDialog
- Таким образом, поток кода программы останавливается, пока отображается диалоговое окно, и возобновляется только после того, как диалог обработан.
- Это позволяет коду внутри цикла while запрашивать у диалогового окна состояние его полей и использовать его для повторной проверки того, что конфигурация в порядке *