Остановить минимизацию полноэкранного окна, когда JOptionPane.showMessageDialog?

Код

private MainApp() /* Extends JFrame */{
    DisplayMode displayMode = new DisplayMode(800, 600, 16, 75);
    ScreenManager.setFullScreenWindow(displayMode, this);
}

Проблема

Всякий раз, когда я звоню:

JOptionPane.showMessageDialog(MainApp.getInstance(), "Test Message Box");

Окно по какой-то причине сворачивается, и мне приходится заново активировать его. Окно сообщений отображается после повторной активации окна.

Вопрос

Есть ли способ остановить сворачивание полноэкранного окна, когда я вызываю окно сообщений?


person ApprenticeHacker    schedule 07.02.2012    source источник
comment
Чтобы быстрее получить помощь, опубликуйте SSCCE.   -  person Andrew Thompson    schedule 07.02.2012
comment
спасибо, я выразился кратко. жду помощи... :)   -  person ApprenticeHacker    schedule 07.02.2012
comment
@Эндрю Томпсон ??? stackoverflow.com/questions/9142300/ ? ?? Я никогда не вижу этого недостатка, может быть, у этих проблем есть аэропорт здесь   -  person mKorbel    schedule 07.02.2012
comment
@IntermediateHacker, пожалуйста, прочитайте stackoverflow.com/questions/9142300/ , перед публикацией здесь SSCCE   -  person mKorbel    schedule 07.02.2012


Ответы (1)


Всякий раз, когда отображается модальное диалоговое окно (JOptionPane, JFileChooser и т. д.), JFrame получает событие WINDOW_DEACTIVATED WindowEvent. Просто игнорируйте деактивацию окна, когда ваше приложение отображается в полноэкранном режиме:

@Override
protected void processWindowEvent(WindowEvent e)
{
    if (e.getID() == WindowEvent.WINDOW_DEACTIVATED)
    {
        // windowState is set in my set full screen code
        if (windowState == WindowState.FULL_SCREEN)
        {
            return;
        }
    }        

    super.processWindowEvent(e);        
}  

Обязательно правильно установите родителя модального диалога:

fileChooser.showOpenDialog(this);

Где «это» — ваш самый лучший JPanel, JInternalFrame или JFrame.

person Scott Wardlaw    schedule 06.02.2015
comment
Работает отлично! Но я не могу использовать/найти константу WindowState.FULL_SCREEN. Это доступно только под Linux? - person trinity420; 21.07.2018