Закрытие программы JOptionPane

Я работаю над проектом, в котором я хотел бы закрыть общий JOptionPane программным путем (не физически нажимая на какие-либо кнопки). Когда истечет таймер, я хотел бы закрыть любую возможную JOptionPane, которая может быть открыта, и вывести пользователя обратно на экран входа в мою программу. Я могу полностью оттолкнуть пользователя, но JOptionPane остается, если я физически не нажму кнопку на нем.

Я смотрел на многих сайтах без такой удачи. Вызов метода doClick () на «Red X» JOptionPane не представляется возможным, и использование JOptionpane.getRootFrame (). Dispose () не работает.

Технически вы можете пропустить все windows приложения, проверьте, имеют ли они тип JDialog и имеют дочерний тип JOptionPane, и удалите диалог, если это так:

Action showOptionPane = new AbstractAction("show me pane!") { @Override public void actionPerformed(ActionEvent e) { createCloseTimer(3).start(); JOptionPane.showMessageDialog((Component) e.getSource(), "nothing to do!"); } private Timer createCloseTimer(int seconds) { ActionListener close = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Window[] windows = Window.getWindows(); for (Window window : windows) { if (window instanceof JDialog) { JDialog dialog = (JDialog) window; if (dialog.getContentPane().getComponentCount() == 1 && dialog.getContentPane().getComponent(0) instanceof JOptionPane){ dialog.dispose(); } } } } }; Timer t = new Timer(seconds * 1000, close); t.setRepeats(false); return t; } }; 

Этот код получил от https://amp.reddit.com/r/javahelp/comments/36dv3t/how_to_close_this_joptionpane_using_code/, как представляется, лучший подход ко мне. Это включает в себя активацию classа JOptionPane, а также использование статических вспомогательных методов для этого. Преимущество состоит в том, что у вас есть объект JOptionPane, который вы можете использовать, когда хотите закрыть диалог.

 JOptionPane jop = new JOptionPane(); jop.setMessageType(JOptionPane.PLAIN_MESSAGE); jop.setMessage("Hello World"); JDialog dialog = jop.createDialog(null, "Message"); // Set a 2 second timer new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); } catch (Exception e) { } dialog.dispose(); } }).start(); dialog.setVisible(true); 
  • Как добавить текст другого цвета в JTextPane
  • Интеграция JavaFX 2.0 WebView в приложение Swing Java SE 6
  • как я могу изменить цвет заголовка в JFrame?
  • JTable не отображается
  • Безопасно ли создавать виджеты Swing / AWT NOT на тему Dispatch Event?
  • Проблемы, связанные с функцией JPanel: paintcomponent ()
  • Как я могу запустить панель задач Windows с помощью Swing?
  • расширенное форматирование ввода текста в текстовом поле?
  • java изменить документ в DocumentListener
  • Как получить значение из JTextField в Java Swing?
  • Как подключить одну панель к другой
  • Interesting Posts

    Стиль темы GWT переопределяет мой стиль css

    Создание структуры для агрегирования

    Как запустить простой бит кода в новом streamе?

    Как вызвать функцию-указатель-член?

    Создайте комбинированный DataTable из двух таблиц данных, связанных с LINQ. C #

    Каковы преимущества относительного пути, например «../include/header.h» для заголовка?

    Как получить элемент по индексу в Spark RDD (Java)

    абсолютная и относительная ширина и высота положения

    libxml / tree.h нет такого файла или каталога

    Получить размер файла на диске

    В чем разница между шириной, внутренней шириной и внешней шириной, высотой, внутренним и верхним высотами в jQuery

    Предупреждение: обнаружены конфликты между различными версиями одной и той же зависимой сборки

    чтение андроида jpeg EXIF ​​метаданные из обратного вызова изображения

    MS Word: как отключить проверку орфографии / грамматики в пользовательском стиле

    Как разбить вектор на группы регулярных последовательных последовательностей?

    Давайте будем гением компьютера.