IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Runnable - Passage d'argument THIS


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Runnable - Passage d'argument THIS
    Bonjour à tous,

    voici mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Engine {
    
        private MainWindow MWin;
    
        public Engine() {
            init();
        }
    
        private void init() {
        }
    
        public void start() {
            //Invoke a new MainWindow object via EDT
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    MWin = new MainWindow(this);
                    MWin.setVisible(true);
                }
            });
        }
    }
    Dans la méthode start(), j'aimerais passé en argument au constructeur de MainWindow l'objet Engine courant.

    Problème, je ne peux pas utiliser le mot-clé this, il se réfère à l'objet Runnable.

    J'ai eu une idée de solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class Engine {
     
        private MainWindow MWin;
        private Engine e;
     
        public Engine() {
            init();
        }
     
        private void init() {
            e = this;
        }
     
        public void start() {
            //Invoke a new MainWindow object via EDT
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    MWin = new MainWindow(e);
                    MWin.setVisible(true);
                }
            });
        }
    }
    Mais cette solution consiste a garder dans l'objet une référence vers lui-même. Ça me semble pas logique, existe t'il un autre moyen pour passer l'objet courant Engine?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Pour avoir le this "Parent", a la place de ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MWin = new MainWindow(this);
    essaye ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MWin = new MainWindow(Engine.this);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Nice! Cela fonctionne

    Je n'avais pas connaissance de cette utilisation du mot-clé this, j'imagine que son utilisation de cette manière n'est utilisable que depuis une classe interne à une autre?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben oui

    si t'es pas dans une classe interne à Engine, il n'y a pas de "Engine" courant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage d'argument sur l'imprimante
    Par linux dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/10/2005, 16h25
  2. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17
  3. [TASM] Passage d'argument à une macro
    Par sorry60 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/04/2005, 18h22
  4. [web] passage d'arguments à un CGI
    Par ma2th dans le forum Web
    Réponses: 4
    Dernier message: 20/08/2004, 12h18
  5. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo