2016-05-26 8 views
0

Ich suchte nach einem zeitgesteuerten JDialog, der nach Ablauf einer bestimmten Zeit verschwindet und der gefundene Code in Ordnung ist.Zeitgesteuerter JDialog schließt nicht nach der angegebenen Zeit

  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); 

Aber nach wie unten Änderung des Codes nicht funktioniert das heißt, die modal wird geschlossen, nachdem festgelegte Zeit nicht abgelaufen ist werden:

ich kann nicht
   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(); 

, warum es passiert. Bitte, wenn jemand die Ursache erklärt, wäre es eine große Hilfe.

Vielen Dank im Voraus.

Antwort

2

Da im zweiten Programm der Aufruf von dialog.setVisible(true); blockiert, wenn der Dialog modal ist, d. H. Die Ausführung stoppt hier, bis Sie das Dialogfeld schließen. Daher wird der Timer erst gestartet, wenn Sie den Dialog manuell schließen. Das erste Programm ist die Lösung. Warum die zweite machen?

+0

versehentlich! :) –

+0

Nun, "Unfälle" passieren! – AhmadWabbi

Verwandte Themen