有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用默认帧将JOptionPane聚焦在前台

我的程序中有一段代码,我需要在其中显示一条错误消息。代码:

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

注意:使用默认帧

消息成功显示,但在按下“确定”按钮确认之前,如果我尝试任何其他成功的流,消息框控件将丢失,消息框将不会位于前台,甚至会阻止连续的流

我希望消息框始终位于前台直到用户按下“确定”按钮,而不是失去焦点和隐藏。怎么做


共 (4) 个答案

  1. # 1 楼答案

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

    使用JFrame和setAlwaysOnTop(true)。您需要显示自己的消息和按钮

    JOptionPane在后台使用JDialog。JDialog不支持此属性

    编辑:

    要获取选项窗格使用的图标,可以使用:

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

    有关其他图标的列表,请参见:UIManager Defaults

  2. # 2 楼答案

    下面的代码足以生成一条JoptionPane消息,并将默认帧设置在顶部

            JDialog dialog = new JOptionPane("ErrorMsg",JOptionPane.ERROR_MESSAGE,JOptionPane.DEFAULT_OPTION).createDialog(" Failure"); 
            dialog.setAlwaysOnTop(true);
            dialog.setVisible(true);
            dialog.dispose();
    
  3. # 3 楼答案

    如果您想让JOptionPane像在成熟的GUI中一样工作,那么首先创建一个成熟的Swing GUI。忘记使用“默认”框架或任何你正在使用的东西(可能是控制台)。您需要GUI行为,因此要实现这一点,必须通过在JFrame中显示应用程序来创建GUI,并让JFrame启动JOptionPane

  4. # 4 楼答案

    将引用传递给父帧,而不是null(第一个参数)