Остановить сворачивание полноэкранного окна, когда JOptionPane.showMessageDialog? - PullRequest
4 голосов
/ 07 февраля 2012

Код

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

Проблема

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

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

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

Вопрос

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

1 Ответ

1 голос
/ 07 февраля 2015

Всякий раз, когда отображается модальное диалоговое окно (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);

Где "this" - ваш самый верхний JPanel, JInternalFrame или JFrame.

...