Jdialog модальность и расширение класса
Итак, мне нужно создать класс, который расширяет JDialog
, чтобы удалить код JDialog
из кода основных функций.
Однако я не знаю, как установить его родителя JFrame
после того, как JDialog
был создан.
Обычно это делается путем передачи JFrame
конструктору, но поскольку это пользовательский класс, я не знаю, как установить его в качестве родителя JDialog
. Я не смог найти ни одного метода типа JDialog.setParent(JFrame);
надеюсь, вы понимаете проблему.
Есть предложения?
2 ответа:
Родитель
Window
(Frame
илиDialog
) называется владельцем в API. Вы можете только упомянуть его в конструкторе, вызвав конструктор super class (JDialog).Пример:
public class SomeDialog extends JDialog { public SomeDialog() { // see other JDialog constructors for other ways to call this super(parentWindow, title, ModalityType.DOCUMENT_MODAL); ... } }
Вы не можете установить его позже, после того, как ваш пользовательский
JDialog
был создан.
Родительский объект можно задать в конструкторе JDialog или в методе setter. Затем, когда вы создадите диалоговое окно, вы уже будете знать родителя и сможете передать его в параметр. Затем этот параметр можно передать в суперконструктор.
Кроме того, мне редко приходилось расширять JDialog, JFrame или любое окно верхнего уровня, но вместо этого я предпочитаю использовать их "из коробки" и делать их, когда это необходимо.