Bonjour tout le monde, je vous expose mon problème :
Je suis actuellement en train de faire un jeu simple, le principe est le suivant : au lancement du jeu, une JFrame apparaît de manière aléatoire toutes les 2s(le temps diminuera quand j'aurais réglé mon problème) et il faut cliquer dessus, cependant, lors du lancement, cette JFrame fait laguer toutes les autres fenêtres donc impossible d'arrêter l'application à part un ctrl+alt+suppr(et encore, je dois m'acharner) sauf quand je suis sous Eclipse, j'arrive encore à l'arrêter à 2s d'intervalle. Bien évidemment, je n'ai pas ce problème si je ne mets pas la boucle qui fait apparaître ma JFrame.
J'ai cherché comment résoudre mon problème mais je ne trouve pas, je pense qu'il faut gérer des threads mais comme j'en ai jamais utilisé, je galère un peu là. Voici le code source :
Code :
- public void clic() {
- JFrame fin = new JFrame("Options du jeu" );
- fin.setUndecorated(true);
- fin.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
- fin.setLayout(new GridLayout(1, 3));
- JButton finJeu = arrete();
- JButton debutJeu = demarre();
- fin.add(debutJeu);
- fin.add(finJeu);
- fin.add(jtf);
- fin.setLocation(850, 0);
- fin.setPreferredSize(new Dimension(300, 70));
- fin.pack();
- fin.setVisible(true);
- }
- public JButton arrete() {
- JButton jrb = new JButton("Stop" );
- jrb.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- stop = true;
- }
- });
- return jrb;
- }
- public JButton demarre() {
- JButton jrb = new JButton("Go" );
- jrb.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- touche = 0;
- stop = false;
- JFrame attrape = new JFrame();
- toucheCarre touche = new toucheCarre();
- attrape.addMouseListener(touche);
- attrape.setUndecorated(true);
- attrape.setPreferredSize(new Dimension(30, 30));
- attrape.setBackground(Color.RED);
- while(stop == false) { //Le problème est ici
- attrape.setBackground(Color.RED);
- attrape.setLocation((int)(Math.random()*1000), (int)(Math.random()*1000));
- attrape.pack();
- attrape.setVisible(true);
- try {
- sleep(4000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- });
- return jrb;
- }
|
Merci d'avance pour vos réponses.
Message édité par Chidori le 05-07-2006 à 18:36:18