Почему конструктор JDialog не центрируется над указанным компонентом-владельцем? - PullRequest
2 голосов
/ 12 декабря 2011

Используя этот JDialog конструктор, где я указываю собственный экземпляр JFrame, я обнаружил, что JDialog не центрируется над его компонентом-владельцем.Вместо этого он появляется в верхнем левом углу.Чтобы это работало, я должен указать компонент-владелец в методе setLocationRelativeTo.

Почему это так?

Рабочая среда:

  • Двойные мониторы
  • ОС Windows XP
  • JDK 1.6.0_29

Обратите внимание, что для экземпляра JFrame я использую setLocationRelativeTo(null).

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

JDialog является очень общим, я думаю. Если вы хотите быстро открыть общее диалоговое окно, посмотрите на JOptionPane. У него есть методы для простого создания центрированного компонента JDialog или немедленного вызова диалогового окна блокировки.

, например

JDialog dialog = new JOptionPane("message", JOptionPane.INFORMATION_MESSAGE)
    .createDialog(jFrameOwner, "window title");

Хотя вы, вероятно, действительно хотите взглянуть на JOptionPane.showXxxDialog статические методы. Очень полезно и удобно.

И, возможно, вы захотите взглянуть на учебник по диалогу . Все диалоги, создаваемые веб-приложением java, могут быть созданы с использованием класса JOptionPane.

2 голосов
/ 12 декабря 2011

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

...