Problem thread java
Fermé
saghir
Messages postés
8
Date d'inscription
mardi 16 septembre 2008
Statut
Membre
Dernière intervention
12 octobre 2012
-
12 oct. 2010 à 18:03
Utilisateur anonyme - 16 oct. 2010 à 09:25
Utilisateur anonyme - 16 oct. 2010 à 09:25
A voir également:
- Problem thread java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
4 réponses
Utilisateur anonyme
12 oct. 2010 à 18:51
12 oct. 2010 à 18:51
Salut,
On ne plante pas, mais on ne sort jamais de la boucle while(true){ de la méthode s()
Cordialement,
Dan
On ne plante pas, mais on ne sort jamais de la boucle while(true){ de la méthode s()
Cordialement,
Dan
Utilisateur anonyme
15 oct. 2010 à 20:59
15 oct. 2010 à 20:59
Salut,
Bon j'ai modifié to programme comme ci-dessous:
Pour l'instant, il fonctionne jusqu'à ce que cpt = 40.
On peut le modifier en ajoutant un bouton Stop, si tu veux on le fera après.
Tu remarqueras que lorsqu'on clique Start le bouton devient inactif, il redevient actif quand cpt arrive à 40 et on peut de nouveau faire une série de 40 en cliquant Start.
Cordialement,
Dan
Bon j'ai modifié to programme comme ci-dessous:
import javax.swing.*; import java.awt.event.*; public class Pointage extends JFrame { public Pointage() { initComponents(); this.setVisible(true); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); lCpt = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setBackground(new java.awt.Color(255, 255, 255)); jButton1.setText("start"); jButton1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { jButton1.setEnabled(false); // création du Thread d'exécution Thread sec = new Thread() { public void run() { //int cpt = 0; while (cpt != 41) { try { Thread.sleep(1000); } catch (Exception err) { JOptionPane.showMessageDialog(null, err); } System.out.println("cpt = " + cpt); lCpt.setText(String.valueOf(cpt++)); } cpt = 0; jButton1.setEnabled(true); } }; sec.start(); } } ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(180, 180, 180) .addComponent(jButton1) .addContainerGap(223, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(259, Short.MAX_VALUE) .addComponent(lCpt, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(157, 157, 157)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(274, Short.MAX_VALUE) .addComponent(lCpt, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(78, 78, 78) .addComponent(jButton1) .addGap(135, 135, 135)) ); pack(); }// </editor-fold> public static void main(String args[]) { new Pointage(); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel lCpt; private int cpt = 0; // PENSER METTRE CPT ICI <<<<<<<<<<<<<<<< // End of variables declaration }
Pour l'instant, il fonctionne jusqu'à ce que cpt = 40.
On peut le modifier en ajoutant un bouton Stop, si tu veux on le fera après.
Tu remarqueras que lorsqu'on clique Start le bouton devient inactif, il redevient actif quand cpt arrive à 40 et on peut de nouveau faire une série de 40 en cliquant Start.
Cordialement,
Dan
saghir
Messages postés
8
Date d'inscription
mardi 16 septembre 2008
Statut
Membre
Dernière intervention
12 octobre 2012
16 oct. 2010 à 01:53
16 oct. 2010 à 01:53
je vous remercie pour votre réponse et pour votre aide et aussi pour le temps que vous avez perdu à cause de moi
13 oct. 2010 à 16:42
13 oct. 2010 à 20:43
13 oct. 2010 à 21:55
14 oct. 2010 à 18:32
Tout d'abord il faut enlever int cpt = 0; et le mettre dans les déclarations de variables private int cpt = 0; (je suppose qu'à terme ce compteur sera remplacé par l'heure).
Ajouter un break après lCpt.setText(String.valueOf(cpt++));
Supprimer aussi
s();
//JOptionPane.showMessageDialog(null, "heure"); <<<<<<<<<<<<<
dans ActionEvent
Et tu constateras que le label est mis à jour après chaque clique sur Start et OK de la boîte heure.
Ce qui montre (pour le moment) l'inutilité de la boucle while(true){
et même du sleep( et aussi du Thread, mais sans en abandonner l'idéeJuste un petit test à faire:
Tout d'abord il faut enlever int cpt = 0; et le mettre dans les déclarations de variables private int cpt = 0; (je suppose qu'à terme ce compteur sera remplacé par l'heure).
Ajouter un break après lCpt.setText(String.valueOf(cpt++));
Supprimer aussi
s();
//JOptionPane.showMessageDialog(null, "heure"); <<<<<<<<<<<<<
dans ActionEvent
Et tu constateras que le label est mis à jour après chaque clique sur Start et OK de la boîte heure.
Ce qui montre (pour le moment) l'inutilité de la boucle while(true){
et même du sleep( et aussi du Thread, mais sans en abandonner l'idée...)
Après ce test, si tu veux, on tentera de voir comment faire ce Thread.
15 oct. 2010 à 00:13
Adhan, mais je n'ai pas me comprendre, je vais essayer d'expliquer l'idée plus
Le but ce JFrame (partie de l'application) Est-ce quand vous appuyez sur le bouton start le comptoir 0123 tantque boucle En cours
(Lorsque vous appuyez sur le bouton stop Contre arrêt, et cela plus tard)
et merci d'avance bien sur