我正在为CS课程制作一个稍微简单的文字游戏。游戏的大部分内容都在控制台窗口中播放,但是,在确定用户是赢还是输的情况下,会显示一个JOptionPane消息对话框,提示用户是赢还是输。
我的问题是JOptionPane显示在所有其他打开的窗口和应用程序最靠后的层上。在我所有其他这样的程序中,它始终出现在最前面。
我已经找到了一个临时解决方案,但是我想知道是否有人可以给我一个明确的理由,以防止日后发生这种情况
答案 0 :(得分:0)
我不确定为什么会发生这种情况,但是对于将来发现这种情况的人来说,这就是我遇到这个问题的原因。
在我的程序中,我有某些部分使用了控制台窗口中的输入(因此是扫描仪),然后根据游戏的某些要求(例如,输赢等)显示JOptionPanes。
无论出于何种原因,每当您从扫描程序类中获取用户输入然后打开JOptionPane时,JOptionPane始终会在所有打开的选项卡中的最远部分打开,这是我发生的事情。
作为此错误的解决方法,我执行了以下操作:
声明一个JDialog并将setAlwaysOnTop设置为true:
lens
每次打开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也会始终弹出在控制台前面。