Как остановить JOptionPane от отключения корневого фрейма
Как мне показать JOptionPane без отключения каких-либо открытых в данный момент фреймов?
У меня есть JFrame с кнопками Start и Stop. В любой момент я хочу, чтобы пользователь мог нажать кнопку "Стоп" в главном фрейме, чтобы остановить вторичную тему (которая была запущена кнопкой "Пуск").
Однако второй работающий поток иногда открывает JOptionPane. Когда это происходит, основной кадр отключается, и пользователь не может нажать кнопку остановки.
(И когда он открывает несколько из этих JOptionPanes подряд, он становится чрезвычайно разочаровывающим, пытаясь остановить его).
я пробовал
JOptionPane.showMessageDialog(null, "It's Broken Mate");
Без успеха. Я также попытался передать его JFrame, чтобы отключить:
JOptionPane.showMessageDialog(new JFrame(), "Still No Go");
Это тоже не удалось. Я даже пытался
JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "CMON Please");
И даже более того,
JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.setRootFrame(frame);
JOptionPane.showMessageDialog(frame, "I'm getting angry now.");
И еще. Ничего такого. Не работает. Он открывает окно сообщения, и все отключено. Я должен закрыть JoptionPane, прежде чем что-либо снова станет активным...
Есть идеи?
ура
1 ответ
JOptionPane
Они модальные, так что вы не можете сделать это напрямую.
Все диалоги являются модальными. Каждый метод showXxxDialog блокирует вызывающего до тех пор, пока взаимодействие с пользователем не будет завершено.
Вам придется использовать JDialog
или похожие.
JOptionPane p = new JOptionPane("I'm getting happy now.");
JDialog k = p.createDialog(":-)");
k.setModal(false); // Makes the dialog not modal
k.setVisible(true);