Java:显示10秒的消息对话框并删除?

Har*_*der 5 java swing

嗨我想表现出来 JOptionPane.showMessageDialog(null, "Appication already running");

10秒然后删除它.我可以用dothat吗?

Den*_*kiy 8

您可以手动创建JOptionPane,而无需静态方法:

JOptionPane pane = new JOptionPane("Your message", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = pane.createDialog(parent, "Title");
Run Code Online (Sandbox Code Playgroud)

然后你可以显示对话框并启动一个计时器,在十秒钟后隐藏它.


小智 7

我尝试了这些答案并遇到了显示对话框是阻塞调用的问题,因此计时器无法正常工作.以下解决了这个问题.

      JOptionPane opt = new JOptionPane("Application already running", JOptionPane.WARNING_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}); // no buttons
  final JDialog dlg = opt.createDialog("Error");
  new Thread(new Runnable()
        {
          public void run()
          {
            try
            {
              Thread.sleep(10000);
              dlg.dispose();

            }
            catch ( Throwable th )
            {
              tracea("setValidComboIndex(): error :\n"
                  + cThrowable.getStackTrace(th));
            }
          }
        }).start();
  dlg.setVisible(true);
Run Code Online (Sandbox Code Playgroud)