JOptionPane.showOptionDialog не всегда перемещается вперед в апплете - PullRequest
1 голос
/ 23 ноября 2010

У меня в апплете нормально всплывающее окно JOptionPane, а-ля:

      Object[] options = {"Grade", "Save", "Cancel"};
      selection = JOptionPane.showOptionDialog(this,
      "Do you want to grade now or save your work to continue later?",
      "Grade Or Save",
      JOptionPane.DEFAULT_OPTION,
      JOptionPane.QUESTION_MESSAGE,
      null, 
      options,
      options[2]);

this относится к объекту JApplet.

Всплывающее окно работает отлично и все, но иногда оно появляется за апплетом, а не всплывает перед ним.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Что нужно сделать, это найти родительский элемент апплета, который является фреймом (он имеет скрытый тип, специфичный для плагина), и использовать этот фрейм в качестве владельца диалога. Вы можете найти это с (Frame)SwingUtilities.getAncestorOfClass(java.awt.Frame.class, theApplet);

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

0 голосов
/ 23 ноября 2010

Не зная, что вы не можете передавать в родительский компонент;в частности, это в showOptionDialog ().Убедитесь, что «это» на самом деле родительский компонент.

Если «это» относится к кадру, вы можете найти, какой кадр находится в фокусе, выполнив следующее:

(псевдокод)

myFrames [] = Frame.getFrames();

if (myFrames [i] .isFocused ()) фрейм для передачи:)

...