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 :

Utiliser contenu d'une variable et pas son nom..


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 29
    Points
    29
    Par défaut Utiliser contenu d'une variable et pas son nom..
    // Version pas tres claire du message ---------------------------------

    Petite question bête à laquelle je n'arrive pas à trouver de réponse.
    Dans une classe InstantProfile heritee de JPanek j'ai plein de petits icones sur lesquels on peut cliquer. Quand on clique dessus je recupere grace à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String iconClicked = ((JLabel)evt.getSource()).getName();
    le nom de l'icone sur lequel on a clique. En fonction de cela je dois faire afficher ou non les icones correspondants contenus dans un autre panel d'une autre classe, Window. J'écris donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Window.iconClicked.setVisible(true);
    Mon problème est le suivant, évidemment je ne souhaite pas que ce soit l'icone iconClicked de la classe window qui apparaisse mais le nom de l'icone contenu dans la variable iconClicked. Je ne sais pas quelle syntaxe utiliser pour cela, pouvez vous m'aider.

    // ------------------------------------------------------------------------




    // Version je l'espere un peu plus claire -------------------------------------

    Je suis pas sur d'avoir été bien clair désolé, en fait le problème revient au meme que : j'ai 3 JLabel dans ma fenetre : jLabel1, jLabel2 et jLabel3.

    Dans une variable jLabelSelected de type String est inscrit le nom du jLabel à rendre visible(donc jLabelSelected prend la valeur jLabel1, jLabel2 ou jLabel3) . Il faudrait donc que j'écrive qqch de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (jLabelSelected.getValue()).setVisible(true);
    malheureusement le .getValue() n'est que pur produit de mon imagination et je ne sais pas comment faire pour utiliser le contenu de la variable plutot que son nom. Savez vous sil il existe une syntaxe spéciale pour ce que je souhaite faire?

    // -----------------------------------------------------------------------

  2. #2
    Membre régulier Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Points : 82
    Points
    82
    Par défaut
    Bonjour, je vais taché de me montré clair.

    Tu as 3 JLabel (jLabel1, jLabel2 et jLabel3) et tu voudrais à afficher un de tes labels lorsqu'il est sélectionné.

    D'abord il se pose un problème, comment l'utilisateur pourra sélectionner un objet qu'il ne voit pas?

    De plus, en acceptant qu'il puisse le sélectionner, ce que je ferai à ta place c'est d'avoir 1 variable de type JLabel nommée oldLabelSelected, qui stockera le dernier Label sélectionné, et je poserai sur chacun de mes 3 Labels un listener qui pourra éxécuter un code lorsqu'un label est sélectionné. Ce code se contentera de rendre visible le label sélectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((JLabel)evt.getSource()).setVisible(true);
    de rendre invisible le dernier Label sélectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(oldLabelSelected != null) oldLabelSelected .setVisible(false);
    et enfin de placer dans l'objet représentant le dernier label sélectionné, la référence au label qui vient d'être sélectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oldLabelSelected = ((JLabel)evt.getSource());
    de plus, pour placer un listener (par exemple pour savoir si on a cliqué sur ce label), il te suffit de faire pour chacun de tes labels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jLabelX.addActionListener(new MyActionListener());
    sachant que MyActionListener est une classe qui implémente l'interface ActionListener.
    passionné de développement

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci Yashiro pour ta réponse.

    En fait la véritable application serait un peu compliquée à expliquer, simplement j'essaie de gagner quelques lignes de code parce que dans cette fenêtre j'aurais certainement 20 icones différents et je ne souhaite donc pas appeller 20 fonctions différentes (dans ce cas mon application marcherait impeccablement mais j'essaie juste d'économiser du code et donc de la clarté).
    Sur chacun de mes labels j'ai déja effectivement un .addActionListener(new jLabelMyActionListener()); . Et ils renvoient tous vers le meme fonction plutot que de renvoyer vers 20 fonctions différentes.

    plutot que de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jLabel1MyActionListener(){}
    jLabel2MyActionListener(){}
    jLabel3MyActionListener(){}
    j'ai simplement un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jLabelMyActionListener(){
      String labelClicked = ((JLabel)evt.getSource()).getName();
    }
    C'est vrai que j'ai pas été clair mais en fait les labels que je veux afficher en .setVisible ne sont pas les memes que ceux qui ont les listeners, ils se trouvent dans des jPanels et dans des classes différentes. Il me faut simplement trouver la syntaxe si elle existe pour utiliser le contenu de la variable iconClicked et pas son nom.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Points : 52
    Points
    52
    Par défaut
    Et si tu fesais un tableau à double colonne avec le nom de l'icone et la valeur ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/01/2009, 12h57
  2. [EVAL] utiliser la valeur d'une variable à partir de son nom
    Par Julien Dufour dans le forum VBA Access
    Réponses: 0
    Dernier message: 24/04/2008, 13h15
  3. Réponses: 6
    Dernier message: 13/06/2007, 09h05
  4. Récupérer une variable à partir de son nom ...
    Par CynO dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2005, 16h59

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