Я не совсем уверен, почему именно это происходит, но для любого, кто найдет это в будущем, именно поэтому у меня возникла эта проблема.
В моей программе у меня были определенные разделы, в которых использовались входные данные из окна консоли (например, сканеры), а затем отображались панели JOptionPanes, основанные на определенных требованиях игры (т. Е. Выигрышных проигрышах и т. Д.).
По любой причине, когда вы принимаете пользовательский ввод из класса сканера, а затем открываете JOptionPane, JOptionPane всегда будет открываться в самом дальнем разделе от всех ваших открытых вкладок, что и происходило со мной.
КакЧтобы обойти эту ошибку, я сделал следующее:
Объявите JDialog и установите trueAlwaysOnTop:
final JDialog dialog = new JDialog();
dialog.setAlwaysOnTop(true);
Каждый раз, когда я сделалоткрыть JOptionPane, вместо записи null
в качестве первого параметра, я поставил имя JDialog, чтобы оно выглядело примерно так:
final JDialog dialog = new JDialog();
dialog.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(dialog, "You win!);
При этом мои JOptionPanes всегда выталкивалисьперед консолью даже при использовании класса сканера.