2016-08-15 12 views
0

Javaで例外をキャッチしてダイアログボックスに表示する方法があります。私はダイアログボックスを10秒間しか作っておらず、それ以降は消えるはずです。私のコードは以下の通りです10秒後にJOptionPaneダイアログボックスが消える方法

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

} 

貴重なご意見をお寄せいただきありがとうございます。

+0

ここをクリックしてください:https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html – user1803551

答えて

0

SwingUtilities.getWindowAncestor(コンポーネント)は、コンポーネントの最初の祖先ウィンドウを返すメソッドです。

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?

が、それは示していどのようにあなたはきちんとしているユーザーにカウントダウンを表示することができます。

+1

このリンクは質問に答えるかもしれませんが、ここでは答えの必須部分を含めることをお勧めします参照のためのリンクを提供する。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 13344556) –

+0

@HunterTurnerこのケースでは、重複としてフラグを立てることは、回答をコピーするのではなく、正しい行動のコースとなります。 – user1803551

+0

どうすればいいですか?編集:私はそれを行う特権が不足していると仮定しています。 –

関連する問題