Диалоги отображаются на панели задач, когда они не имеют владельца.Возможность иметь неиспользуемые диалоги была добавлена в AWT в Java 6. К сожалению, в это время класс Swing JDialog
уже имел конструкторы с предопределенным поведением в отношении отсутствующих или null
владельцев, обходя ограничения предыдущих версий Java,Это поведение нельзя изменить из-за проблем совместимости.
Таким образом, когда вы используете старые конструкторы JDialog()
и те, которые принимают аргумент Frame
, они демонстрируют поведение, совместимое со старыми версиями, создаваяневидимый манекен Frame
как владелец, если ничего не указано.Поэтому созданные таким образом диалоги всегда принадлежат фрейму.
Это также включено в документацию :
ПРИМЕЧАНИЕ. Этот конструктор не позволяет вамсоздать неизвестную JDialog
.Чтобы создать неизвестный JDialog
, вы должны использовать конструктор JDialog(Window)
или JDialog(Dialog)
с аргументом null
.
Именованные конструкторы являются новыми для Java 6, так как возможностьиметь диалог, принадлежащий другому Dialog
или Window
, также был добавлен в этой версии.Поскольку эти новые конструкторы не обязательно должны быть совместимы с предыдущей версией, они могут поддерживать неиспользуемые диалоги.По этой причине решение в этом ответе работает.
Вы также можете использовать конструктор, взяв ModalityType
, как в , этот ответ , как этоКонструктор также является новым двумя Java 6 и поддерживает неизвестные диалоги.Но вам не нужно создавать подкласс JDialog
, чтобы использовать этот конструктор.