Thread et int par reference

Résolu/Fermé
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 - 4 nov. 2006 à 19:04
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 4 nov. 2006 à 20:24
Bonjour,

Prenons comme exemple le code suvant :
// Dans un fichier :

package MonPackage;
public class ClasseA extends java.applet.Applet
{
       int Position = 0;
       .....  
}

// Dans un autre fichier:

package MonPackage;
public class MonThread extends Thread
{
       public MonThread( ??? );
        {
        }
}

Donc, je voudrais avoir acces a ma variable Position a partir de ma thread.
J'ai donc essayer de passer la variable par reference mais ca ne marche pas.
Quelqu'un sait comment je pourrais faire cela ??

Merci à l'avance.

Guillaume.

________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 nov. 2006 à 20:24
Salut,

tien vite fait :

import javax.swing.JApplet;
import javax.swing.JLabel;

public class ClasseA extends JApplet {
    private int position = 0;
    private JLabel label = null;
   
    public int getPosition() {
        return position;
    }

    public void setPosition(int position) {
        this.position = position;
    }
   
    public JLabel getLabel() {
        return label;
    }

    public void init() {
        label = new JLabel("position : " + position);
        setContentPane(label);
        MonThread mt = new MonThread(this);
        mt.start();
    }
}

public class MonThread extends Thread {
    private ClasseA cA;

    public MonThread(ClasseA cA) {
        this.cA = cA;
    }

    public void run() {
        while(true){
            int position = cA.getPosition();
            position++;
            cA.setPosition(position);
            cA.getLabel().setText("position : " + position);
        }
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 nov. 2006 à 19:18
Salut,

tu peux le faire de deux façon (de plus mais bon ici je ne parlerais que de 2 facon) :

package MonPackage;

public class ClasseA extends java.applet.Applet
{
       int position = 0;
       .....  
       public int getPosition(){
          return position;
       }
       public void setPosition(int position){
          this.position = position;
       }

       public void uneMethode(){
             MonThread mt = new MonThread(this);
             ......
       }
      
}

// Dans un autre fichier:

package MonPackage;
public class MonThread extends Thread {
       public MonThread( ClasseA cA ){
          int position = cA.getPosition();
          position++;
          cA.setPosition(position);
          .....
       }
}

ou encore en static mais c'est dangereux

package MonPackage;


public class ClasseA extends java.applet.Applet

{

       static int position = 0;

       .....  

       public static int getPosition(){

          return position;

       }

       public static void setPosition(int position){

          this.position = position;

       }      

}


// Dans un autre fichier:


package MonPackage;

public class MonThread extends Thread {

       public MonThread( ){

          int position = ClasseA.getPosition();

          position++;

          ClasseA.setPosition(position);

          .....

       }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
gbourgeois0019 Messages postés 152 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 2 juin 2008 1
4 nov. 2006 à 19:55
J'ai essayer la première méthode, cela devrait marcher, pas d'erreur de compilation non plus, mais lorsque je fais MonThread mt = new MonThread(this); , mon Applet gèle et le thread ne semble pas démarrer. ( J'ai rajouter mt.start(); aussi ), mais ca fait exactement le meme chose ...

________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
0
Rejoignez-nous