Salut à tous. J'ai besoin d'aide.
J'ai besoin de créer un compte à rebours, sauf que je galére un peu.
On m'as renvoyé sur Timertask et Schedule, mais j'ai un peu de mal à comprendre leur fonctionnement, et je n'arrive à rien.
Je ne demande pas à ce qu'on me code un compte à rebours, quoique, mais plutôt qu'on puisse me donner une sorte de marche à suivre pour coder tout cela.
Je remercie d'avance ceux qui veulent bien m'aider.
Si tu tapes "countdown java" sur google tu auras déjà pas mal de réponses (voire des comptes a rebours entièrement codé).
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class CompteEstBon extends JFrame{
private static String[] plaquettes={"1","1","2","2","3","3","4","4","5","5","6","6","7","7","8","8","9","9","10","10","25","25","50","50","75","75","100","100"};
private static int Total = (100 + (int)(Math.random()*(999-100))+1);
static Thread thread = new Thread();
public CompteEstBon() throws InterruptedException{
super("Compte est bon");
JPanel jpFond = new JPanel();
BorderLayout bl = new BorderLayout();
jpFond.setLayout(bl);
for(int i = 90; i>=0; i--){
thread.sleep(1000);
System.out.println(i);
}
Random r = new Random(System.currentTimeMillis());
int position1 = r.nextInt(plaquettes.length);
String nb1 = plaquettes[position1];
int position2 = r.nextInt(plaquettes.length);
String nb2 = plaquettes[position2];
int position3 = r.nextInt(plaquettes.length);
String nb3 = plaquettes[position3];
int position4 = r.nextInt(plaquettes.length);
String nb4 = plaquettes[position4];
int position5 = r.nextInt(plaquettes.length);
String nb5 = plaquettes[position5];
int position6 = r.nextInt(plaquettes.length);
String nb6 = plaquettes[position6];
JPanel jpNord = new JPanel();
jpNord.add(new JButton(nb1));
jpNord.add(new JButton(nb2));
jpNord.add(new JButton(nb3));
jpNord.add(new JButton(nb4));
jpNord.add(new JButton(nb5));
jpNord.add(new JButton(nb6));
jpFond.add(jpNord,BorderLayout.NORTH);
JPanel jpEst = new JPanel();
jpEst.add(new JButton(String.valueOf(Total)));
jpFond.add(jpEst,BorderLayout.EAST);
this.setContentPane(jpFond);
this.pack();
this.setVisible(true);
}
public void correction(){
}
}
J'ai ça comme code pour le compte à rebours
for(int i = 90; i>=0; i--){
thread.sleep(1000);
System.out.println(i);
}
Et ça me pose un probleme. En fait, il me lance le compteur, mais je dois attendre la fin pour que le reste se lance. Sauf que je ne vois pas où est le probleme.
Quelqu'un peut m'aider ?
C'est le fonctionnement normal.
thread.sleep fait attendre le thread courant. Étant donné que le reste des instructions sont après le sleep, tu dois tous les attendre pour que ça puisse s'exécuter.
Tu dois exécuter une partie de ton code en parallèle de ton programme principal. Pour cela, tu créés une classe qui hérite de Runnable. Tu mets le code qui doit s'exécuter en parallèle dans la function run(). Il ne te reste plus qu'à instancier ta classe et la démarrer en appelant la méthode start().
Exemple : https://stackoverflow.com/a/3489549
(Tu peux aussi faire avec un Thread anonyme).