JOptionPane.showMessageDialog Запрос? - PullRequest
0 голосов
/ 08 июля 2011

Это сценарий.

У меня есть код, который инициирует Alram при обнаружении ошибки.

AudioAlarm t = new AudioAlarm(song);
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("Awake");
    t.start();
    setRunnung(true);
    JOptionPane.showMessageDialog(null, "Alarm ...", "Alarm", JOptionPane.OK_OPTION);
    AudioAlarm.setLoop(false);
    System.out.println("Alarm Acknowledged ...");

Я хотел бы изменить эту логику таким образом,

Если сигнал тревоги не был подтвержден пользователем в течение периода времени, скажем, 2 минуты, он отключается и диалоговое окно сообщения сообщения должно исчезнуть.

Как я могу получить это?

Я могу остановить Alram, но не могу закрыть диалоговое окно, если пользователь не нажмет «ОК»

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Чтобы делать то, что вы хотите, вы должны:

  • Создать экземпляр JOptionPane, используя один из его конструкторов
  • Вызовите createDialog на этой панели параметров, чтобы получить диалоговое окно, содержащее эту панель параметров
  • Использование экземпляра javax.swing.Timer для запуска события действия через 2 минуты
  • добавить слушатель действия к этому таймеру, который закроет диалоговое окно, содержащее панель параметров
  • показать диалог, содержащий панель параметров.
0 голосов
/ 08 июля 2011

Я не знаю, можно ли выполнить то, что вам нужно, но вы не можете вместо этого скопировать JOptionPane как JFrame и избавиться от него?Вы можете найти, как закрыть JFrame на this Предыдущее сообщение SO:

Если вы хотите, чтобы GUI вел себя так, как будто вы нажали "X", вам нужно отправитьWindowClosing Событие в Окно.«ExitAction» из Закрытие приложения позволяет вам добавить эту функцию к элементу меню или любому компоненту, который легко использует действия.

...