Jdialog модальность и расширение класса


Итак, мне нужно создать класс, который расширяет JDialog, чтобы удалить код JDialog из кода основных функций.

Однако я не знаю, как установить его родителя JFrame после того, как JDialog был создан.

Обычно это делается путем передачи JFrame конструктору, но поскольку это пользовательский класс, я не знаю, как установить его в качестве родителя JDialog. Я не смог найти ни одного метода типа JDialog.setParent(JFrame); надеюсь, вы понимаете проблему.

Есть предложения?

2 2

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 или любое окно верхнего уровня, но вместо этого я предпочитаю использовать их "из коробки" и делать их, когда это необходимо.