2016-05-26 18 views
0

指定された時間が経過し、見つかったコードが正常に実行された後に消える予定のJDialogを探していました。指定された時間が経過した後にJDialogのTimed JDialogが終了しない

  JFrame f = new JFrame(); 
      final JDialog dialog = new JDialog(f, "Test", true); 
      Timer timer = new Timer(2000, new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        dialog.setVisible(false); 
        dialog.dispose(); 
       } 
      }); 
      timer.setRepeats(false); 
      timer.start(); 

      dialog.setVisible(true); 

しかし、以下のようにコードを変更した後、指定した時間が経過した後に、すなわちモーダルが閉じられていない機能していません。

   JFrame f = new JFrame(); 
       final JDialog dialog = new JDialog(f, "Test", true); 

       dialog.setVisible(true); 

       Timer timer = new Timer(2000, new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
         dialog.setVisible(false); 
         dialog.dispose(); 
        } 
       }); 
       timer.setRepeats(false); 
       timer.start(); 

を、それが起こって、なぜ私が取得することはできません。誰かが原因を説明すれば、大きな助けになるでしょう。

ありがとうございます。

答えて

2

dialog.setVisible(true);の呼び出しは、ダイアログがモーダルであるときにブロックされているため、ダイアログを閉じるまでここで実行が停止します。したがって、タイマーは、ダイアログを手動で閉じるまで開始されません。最初のプログラムは解決策です。なぜ第二のことをしていますか?

+0

誤って! :) –

+0

まあ、 "事故"が起こる! – AhmadWabbi

関連する問題