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();
}
# Thread
Posté par Roger Rabbit . En réponse au message Ecouter un bouton. Évalué à 4.
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(); }