为什么我的JOptionPane消息对话框弹出在控制台窗口后面?

时间:2019-05-08 21:53:02

标签: java joptionpane jdialog

我正在为CS课程制作一个稍微简单的文字游戏。游戏的大部分内容都在控制台窗口中播放,但是,在确定用户是赢还是输的情况下,会显示一个JOptionPane消息对话框,提示用户是赢还是输。

我的问题是JOptionPane显示在所有其他打开的窗口和应用程序最靠后的层上。在我所有其他这样的程序中,它始终出现在最前面。

我已经找到了一个临时解决方案,但是我想知道是否有人可以给我一个明确的理由,以防止日后发生这种情况

1 个答案:

答案 0 :(得分:0)

我不确定为什么会发生这种情况,但是对于将来发现这种情况的人来说,这就是我遇到这个问题的原因。

在我的程序中,我有某些部分使用了控制台窗口中的输入(因此是扫描仪),然后根据游戏的某些要求(例如,输赢等)显示JOptionPanes。

无论出于何种原因,每当您从扫描程序类中获取用户输入然后打开JOptionPane时,JOptionPane始终会在所有打开的选项卡中的最远部分打开,这是我发生的事情。

作为此错误的解决方法,我执行了以下操作:

  1. 声明一个JDialog并将setAlwaysOnTop设置为true:

    lens
  2. 每次打开JOptionPane时,我都没有写data = {k: [a[i:i+n] for i in range(0, len(a), n)] for k, a in d.items() for n in [len(d1[k])*len(d2[k])]} 作为第一个参数,而是输入了JDialog的名称,因此它看起来像这样:

    final JDialog dialog = new JDialog();
    dialog.setAlwaysOnTop(true);
    

有了这个,即使使用扫描仪类,我的JOptionPanes也会始终弹出在控制台前面。