Java JOptionPane.showMessageDialog查询?

Java JOptionPane.showMessageDialog查询?,java,swing,joptionpane,Java,Swing,Joptionpane,情况就是这样 我有一段代码,在遇到错误时初始化Alram AudioAlarm t = new AudioAlarm(song); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Awake

情况就是这样

我有一段代码,在遇到错误时初始化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,但是如果用户没有按“OK”键,我就无法处理对话框。我不知道您要做的事情是否可以完成,但是您不能将JOptionPane复制为JFrame并处理掉它吗?您可以找到如何在上一篇SO文章中关闭JFrame:

如果您希望GUI表现为 您单击了“X”,然后需要 将windowClosing事件分派到 窗户。来自的“ExitAction”允许您添加此选项 菜单项或任何菜单项的功能 易于使用操作的组件


要想做你想做的事,你应该:

  • 使用其构造函数之一创建一个
    JOptionPane
    实例
  • 在此选项窗格上调用
    createDialog
    ,以获取包含此选项窗格的对话框
  • 使用
    javax.swing.Timer
    实例在2分钟后触发操作事件
  • 将操作侦听器添加到此计时器,该计时器将关闭包含选项窗格的对话框
  • 显示包含选项窗格的对话框