Немагчыма сфакусаваць JOptionPane на пярэднім плане з рамкай па змаўчанні

У мяне ёсць кавалак кода ў маёй праграме, дзе ў мне трэба, каб адлюстраваць паведамленне пра памылку. код:

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

Заўвага: Па змаўчанні выкарыстоўваецца рамка.

паспяхова адлюстроўваецца паведамленне, але перш, чым прызнаць, націснуўшы кнопку «OK», калі я паспрабаваць любы іншы паспяховы паток кіраванне акном паведамлення губляюцца і акно паведамленні не будзе на пярэднім плане блакавання нават паслядоўныя патокі.

I want the Message Box to be on the foreground always until the user presses "OK" button, rather losing focus and getting hidden. How to do that?

0
@ShaikMd: калі вы хочаце GUI паводзіны, а затым зрабіць яго GUI. Інакш, што вы бачыце, што вы атрымаеце.
дададзена аўтар Hovercraft Full Of Eels, крыніца
Што вы маеце на ўвазе пад «па змаўчанні кадра»? Гэта павінна быць кампанент перадаецца showMessageDialog замест Null .
дададзена аўтар Andrew Thompson, крыніца
Для лепшай дапамогі раней, апублікаваць SSCCE .
дададзена аўтар Andrew Thompson, крыніца
Я не выкарыстоўваю любы кампанент [кадр], так што поле будзе пустым.
дададзена аўтар Shaik Md, крыніца
@HovercraftFullOfEels: Мая праграма не з'яўляецца прыкладанне AWT/Swing, я проста трэба адлюстраваць толькі адзін памылку, так што няма выкарыстання Рамов як такія.
дададзена аўтар Shaik Md, крыніца

4 адказы

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

3
дададзена

Pass спасылкі на бацькоўскім кадр замест нуля (першыя пары).

2
дададзена
У вас ёсць «выкарыстоўваецца па змаўчанні кадр.» Перадайце спасылку на JOptionPane.
дададзена аўтар StanislavL, крыніца
@StanislavL: Я думаю, што ён тэлефануе ў кансоль «рамка» па змаўчанні. 1+, хоць за тое, каб дапамагчы з гэтым вельмі заблытаным пытаннем.
дададзена аўтар Hovercraft Full Of Eels, крыніца
У мяне няма якога-небудзь бацькоўскага кампанента ў кодзе.
дададзена аўтар Shaik Md, крыніца
<Р> Я хачу, каб акно паведамленні, каб быць на пярэднім плане заўсёды да таго часу, пакуль карыстач не націсне кнопку «OK», а страты фокусу і атрымліваць схаваныя.

Выкарыстоўвайце JFrame і setAlwaysOnTop (ісціна) . Вам трэба будзе адлюстроўваць ўласнае паведамленне і кнопку.

JOptionPane выкарыстоўвае JDialog за кулісамі. JDialog не падтрымлівае гэта ўласцівасць.

змяніць:

Каб атрымаць значок, які выкарыстоўваецца ў панэлі опцый вы можаце выкарыстаць:

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

Спіс іншых значкоў см: UIManager Defaults .

2
дададзена
Я не думаў пра гэта, і гэта будзе працаваць, дзякуй і 1+!
дададзена аўтар Hovercraft Full Of Eels, крыніца
@ShaikMd см рэдагавання.
дададзена аўтар camickr, крыніца
Я рушыў услед за тыя ж самыя крокі, але як адлюстраваць сімвал памылкі?
дададзена аўтар Shaik Md, крыніца
Я стварыў JFrame, які выкарыстоўваецца JLabel і JButton зрабіў выгляд, на пярэднім плане, інвалідаў мін, макс опцыя у загалоўку ... карацей зрабіў гэта выглядае дыялогавае акно з ... Цяпер я хачу, каб адлюстраваць «X» сімвал памылкі ў гэта так жа, як у дыялогавым акне ў выпадку памылкі ... як гэта зрабіць? я які распасціраецца ад класа JDialog ..
дададзена аўтар Shaik Md, крыніца

Ніжэй код дастаткова, каб зрабіць паведамленне JOptionPane з рамкай па змаўчанні павінен быць усталяваны на вяршыні.

        JDialog dialog = new JOptionPane("ErrorMsg",JOptionPane.ERROR_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog(" Failure"); 
        dialog.setAlwaysOnTop(true);
        dialog.setVisible(true);
        dialog.dispose();
2
дададзена