Возможно, что это поведение зависит от браузера, в котором вы запускаете апплет (и, кажется, вы это доказали), поэтому я бы предложил вам попробовать вызывать requestFocus () и requestFocusInWindow () для диалога (или компонента внутри него) ), чтобы перевести фокус в диалоговое окно.
Еще раз - если вы запрашиваете фокус перед тем, как открыть диалоговое окно (перед setVisible (true)) курса, оно завершится неудачей, поскольку диалоговое окно еще не показано. Если вы вызываете его ПОСЛЕ метода setVisible (true) - если ваш диалог (или OptionPane) является модальным - он будет выполняться только тогда, когда диалог закрыт, поэтому он также не имеет смысла. Вы должны добавить WindowListener в ваш диалог и запросить фокус в диалоге после его открытия.
Проверьте этот пример:
public static void main ( String[] args )
{
// Modal dialog
final JDialog dialog = new JDialog ( );
dialog.setModal ( true );
// Adding listener
dialog.addWindowListener ( new WindowAdapter ()
{
public void windowOpened ( WindowEvent e )
{
dialog.requestFocus ();
}
} );
// Displaying dialog
dialog.setVisible ( true );
}
Тем не менее, dialog.requestFocus () здесь представляет собой платформо-зависимый вызов, который может не фокусировать / выдвигать ваш диалог поверх других открытых окон. Во всех версиях Windows он должен работать нормально.
Также вы можете попробовать использовать dialog.toFront () - это должно открыть диалоговое окно и перенести в него фокус.