У меня есть диалог модальных настроек, который является JDialog. В этом окне настроек я поместил некоторые компоненты, включая кнопку, в еще один диалог модальных настроек, который также является JDialog. Я сделал их JDialogs, потому что это единственный способ узнать модальный диалог.
Проблема заключается в следующем: когда я создаю диалог основных настроек, я должен построить JDialog либо без родительского фрейма, либо с родительским фреймом. Поскольку мое главное окно - это JFrame, я могу просто передать это в конструктор диалога основных настроек. Но когда я хочу создать второй диалог модальных настроек, который должен иметь диалог основных настроек в качестве родителя, я не могу найти способ получить (J) фрейм JDialog. Я хочу передать этот диалог основных настроек в качестве родителя, чтобы второй диалог настроек находился на нем, когда он отображается. Предположим, что второй диалог настроек не имеет конструктора для передачи местоположения, а только конструкторы JDialog.
Есть ли способ получить (J) кадр JDialog? Есть ли дефект дизайна в моей настройке, и должен ли я использовать что-то еще для этих диалогов настроек? (И если да, как мне сделать эти альтернативные диалоги настроек модальными?)
Спасибо за помощь, Erik
UPDATE: Спасибо всем за ваши ответы. Они заставили меня понять, что, по-видимому, не обязательно иметь владельца JDialog. Я думал, что это необходимо для диалога, чтобы отключить владельца, пока диалог не будет закрыт, но, видимо, модальность не зависит от владельца. Я также заметил, что даже с владельцем диалог все еще не сосредотачивается на собственнике, поэтому теперь мой код похож:
public class CustomDialog extends JDialog {
public CustomDialog(String title) {
setModal(true);
setResizable(false);
setTitle(title);
buildGUI();
}
public Result showDialog(Window parent) {
setLocationRelativeTo(parent);
setVisible(true);
return getResult();
}
}
Это также позволяет модальные диалоги в модальных диалогах.
Спасибо за вашу помощь!