Невозможно сфокусировать JOptionPane на переднем плане с рамкой по умолчанию - PullRequest
0 голосов
/ 28 октября 2011

В моей программе есть фрагмент кода, в котором мне нужно отобразить сообщение об ошибке. Код:

String ErrorMsg=" Error to be Diplayed ";
JOptionPane.showMessageDialog(null, ErrorMsg, "Failure", JOptionPane.ERROR_MESSAGE);

Примечание: используется рамка по умолчанию.

Сообщение успешно отображается, но до подтверждения нажатием кнопки «ОК», если я пытаюсь выполнить какой-либо другой успешный поток, управление окном сообщения теряется, и окно сообщения не будет на переднем плане блокировать даже последовательные потоки.

Я хочу, чтобы окно сообщений всегда находилось на переднем плане , пока пользователь не нажмет кнопку «ОК», а скорее потеряет фокус и станет скрытым. Как это сделать?

Ответы [ 4 ]

3 голосов
/ 28 октября 2011

Если вы хотите, чтобы JOptionPane вел себя так же, как в полноценном графическом интерфейсе, то сначала создайте полноценный Swing GUI.Забудьте об использовании фреймов «по умолчанию» или чего-либо еще (возможно, консоли).Вы хотите поведение GUI, и поэтому, чтобы получить это, вы должны создать GUI, отображая ваше приложение в JFrame и заставляя JFrame запускать JOptionPane.

2 голосов
/ 02 февраля 2012

Приведенного ниже кода достаточно, чтобы сделать сообщение JoptionPane с рамкой по умолчанию для установки сверху.

        JDialog dialog = new JOptionPane("ErrorMsg",JOptionPane.ERROR_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog(" Failure"); 
        dialog.setAlwaysOnTop(true);
        dialog.setVisible(true);
        dialog.dispose();
2 голосов
/ 28 октября 2011

Я хочу, чтобы окно сообщений всегда находилось на переднем плане, пока пользователь не нажмет кнопку «ОК», скорее потеряет фокус и станет скрытым.

Используйте JFrame и setAlwaysOnTop(true). Вам нужно будет отобразить собственное сообщение и кнопку.

JOptionPane использует JDialog за кулисами. JDialog не поддерживает это свойство.

Edit:

Чтобы получить значок, используемый на панели параметров, вы можете использовать:

Icon icon = UIManager.getIcon("OptionPane.errorIcon");

Список других значков см .: UIManager Defaults .

2 голосов
/ 28 октября 2011

Передать ссылку на родительский фрейм вместо нуля (первый параметр).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...