2017-07-30 3 views
0

bonjour tout le monde j'ai besoin d'aide ici J'essaye de faire le vérificateur de site Web et mettre le résultat dans un Jframe mais c'est plus dur que je pensais parce que quand je fais une boucle dans Jframe avec le fil .. le Jframe gelant et rien ne fonctionne .. est-il un simple pourquoi faire cela? désolé pour mon mauvais anglais .. Je suis ton ami de la Syrie de qui est mon codeajouter une boucle dans Jframe

private void formWindowActivated(java.awt.event.WindowEvent evt) {          

while(true) 
{ 
try { 
    Thread.sleep(500); 
} catch (InterruptedException ex) { 
    Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); 
} 
    try{ 

    InetAddress[] addresses = InetAddress.getAllByName("www.google.com"); 
    for (InetAddress address : addresses) { 
    if (address.isReachable(10000)) 
    { 
     t1.setText("okay"); 

     System.out.println("Connected "+ address); 
    } 
    else 
    { 
     System.out.println("Failed "+address); 
    } 
    } 
    }catch (Exception e) 
    {} 

    } 
+0

Vous devriez jeter un coup d'œil à [Swing Timers] (https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html). –

+1

* lorsque je fais une boucle dans Jframe avec Thread *: vous ne lancez pas de discussion dans le code affiché. Lisez la documentation de SwingWorker –

+0

Vous devez créer JFrame et la boucle d'interrogation chacun dans un 'Thread/Runnable' distinct - voir ici https://stackoverflow.com/questions/17107728/using-a-thread-loop-to-update-a -jframe? rq = 1 –

Répondre

2

Ne pas utiliser Thread.sleep() dans un auditeur. Ce code sera exécuté sur le Event Dispatch Thread (EDT) qui est le thread chargé de gérer les événements et de repeindre l'interface graphique. En utilisant sleep(), vous empêchez l'interface graphique de répondre à l'événement et de se repeindre. A la place, vous devez créer un thread séparé pour vérifier votre site Web.

Lisez la section du tutoriel Swing sur Concurrency in Swing pour plus d'informations. Vous devriez probablement utiliser le Swing Worker, qui est décrit dans le tutoriel.