• # Thread

    Posté par . En réponse au message Ecouter un bouton. Évalué à 4.

    Ce que tu fais la il ne faut pas le faire. c'est a cause de ce genre de choses que les applications swing peuvent etre lentes. Quand tu lances ton calcul à l'interieur de la méthode actionPerformed, ce calcul est effectué à l'intérieur du thread Swing qui s'occupe de l'affichage. Par conséquent, comme ton calcul est long, tout les actions swing, comme par exemple repeindre les boutons ou réagir aux actions sont gelée. Pour corriger cela, il faut lancer ton calcul dans un thread indépendant du thread Swing qui s'occupe de l'affichage et ensuite une fois ton calcul terminé, envoyer les resultats à afficher dans le thread Swing;
    private void longTimeToCompute {
     // 1er thread pour ton calcul 
     new Thread() {
     public void run() {
     
     // Ton calcul 
     String result = calcul() ; 
     // On renvoie les résultats à travers un Runnable 
     // dans le thread Swing. 
     SwingUtilities.invokeLater(
     new Runnable() {
     public void run() {
     label.setText(result) ; 
     }
     }
     );
     }
     }.start();
    }