如何使我的JOptionPane对话框在10秒后消失

时间:2016-08-15 07:30:48

标签: java joptionpane

我在Java中有一个方法来捕获异常并在对话框中显示。我想让对话框只持续10秒钟,之后就会消失。我的代码在

之下
private void errorpopup(Exception m)
{
      JOptionPane.showMessageDialog(
              null,
              new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>", JOptionPane.ERROR_MESSAGE));

}

请提前提供宝贵的建议和感谢。

1 个答案:

答案 0 :(得分:2)

SwingUtilities.getWindowAncestor(component)是一个返回组件的第一个祖先窗口的方法。

您可以将它与JLabel(作为组件)结合使用,以获取对JOptionPane消息对话窗口的引用,然后您可以在设置为10秒的计时器方法中关闭该窗口;像这样:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class TestClass {

    public static void main(String[] args)
    {
        errorpopup(new Exception("Error"));
    }

    private static void errorpopup(Exception m)
    {
        JLabel messageLabel = new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>");
        Timer timer = new Timer(10000, 
            new ActionListener()
            {   
                @Override
                public void actionPerformed(ActionEvent event)
                {
                    SwingUtilities.getWindowAncestor(messageLabel).dispose();
                }
            });
        timer.setRepeats(false);
        timer.start();
        JOptionPane.showMessageDialog(null, messageLabel, "Error Window Title", JOptionPane.ERROR_MESSAGE);
    }
}

或者,此链接还有另一个示例,说明如何完成: How to close message dialog programmatically?

您需要做一些工作才能使其符合您的目的,但它会显示您如何向用户显示整齐的倒计时。