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

AWT/Swing Java Discussion :

obtenir JComponent a partir d'une chaine


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut obtenir JComponent a partir d'une chaine
    Bonjour, est il possible d'obtenir un JCompoenent deja creer, dont l'identifiant est par exemple la chaine "textField"?

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JTextField textField = new JTextField();
    j'aimerai par la suite ayant une chaine "textField" obtenir le JComposant cmp.
    pour ensuite faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmp.setEnable(false);

  2. #2
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    Ce n'est pas possible comme ça, mais tu peux cependant récupérer un composant via son Name que tu connais par avance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jtextField.getName()

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    eeuhhh...il me semble que getName() renvoie le nom du composant, or moi je voudrai le composant a partir de son nom que je connais d'avacne.

  4. #4
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    oui...
    A priori tu as la possibilité de connaitre le container parent (proche ou éloigné) de ton JTextField...
    Donc, tu parcours tes containers les un après les autres afin de tester pour chaque enfant son type (appartient à JTextField ou non) et son nom (getName()), et là tu peux le récupérer ...

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    pourquoi vouloir accéder au JTextField par une chaîne de caractère, alors que tu peux y accéder directement ?

    Tu peux quand même le faire toi-même : tu crées une Map statique qui associe les composants à leurs noms, mais ce n'est pas la façon habituelle de programmer en Java. Si tu n'arrives pas à accéder à ton JTextField à partir de la classe qui doit le commander, essaie plutôt de réorganiser tes classes.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    en fait voila ce que je veut faire...j'ai une application GUI, il y plein de JTextField, des Jlist et pas seulement...

    Je veut creer une application qui, au lancement se connestera a une base de donne qui contient certains elements de mon appli (les JTextField et Jlist...) et ainsi les elements presents dans la base de donne pourront etre mis en setEnable(false). Donc j'obtient une chaine de la base de donne qui est la representation de mon element en question, mais alors, comment faire le mapping entre cette chaine et l'element en question?

    J'ai pas envie de parcourir tout les JComponent a chaque fois et de les comparer a la chaine avec un toString()...je trouve que c'est pas trop optimale...n'y a t il pas un getComponentByName....ou quelque chose de ce genre?

  7. #7
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    Désolé, je ne suis pas sûr de bien comprendre...
    - Que contient concrétement ta base de donnée ?
    - Que contient ta classe GUI ? Des JTextField et autres JList déclarés ? Déjà créés ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    par exemple j'ai deja un JTextField:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JTextField txtField  = new JTextField();
    ds ma base j'aurai un champ dont le contenu sera la chaine txtField...et ainsi pour tous les composants.

    Donc en lisant le champ et en obtenant la chaine txtField je saurai que j'ai un element de ce nom qui est du type Jcomponent et je veut le faire setEnable(false).

    Je veut pas parcourir tout les composants d'une frame en comparant leur nom a la chaine obtenue de la base, je veut directement avoir le composanrt en question.

  9. #9
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Je veut pas parcourir tout les composants d'une frame en comparant leur nom a la chaine obtenue de la base, je veut directement avoir le composanrt en question.
    Soit tu utilises une Map<String, Component>, soit tu dois parcourir la hiérarchie de la fenêtre pour trouver le composant en question. Comme les autres intervenants l'ont déjà dit en fait.

    Si un getComponentByName() existait il ferait exactement ça : parcourir toute la hiérarchie pour comparer le nom fourni à la valeur renvoyée par getName().

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    d'accord c'est ce que je ferai alors.

    je mes resolu

  11. #11
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Personnellement, je pencherais plutôt pour la solution de la HashMap<String, Component>, qui consomme plus de mémoire, mais est beaucoup plus rapide (temps d'accès constant).

    A moins d'avoir plus de 1000 composants à gérer par ton application (et encore), la HashMap sera plus rapide et ne prendra pas trop de place (1000 long + 1000 pointeurs, c'est encore assez correct).

    De plus, je suppose que tu ne vas pas administrer tous les composants, donc parcourrir le tout, c'est beaucoup d'instructions inutiles.

    Enfin, ce n'est que mon avis, tu fais ce que tu veux .

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Points : 65
    Points
    65
    Par défaut
    ouais je vois...finallement c'est que j'ai decider de faire, en ce qui concerne le nombre c'est largement inferieur a 1000...enfin c'est ce que je pense.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/01/2006, 20h22
  2. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07
  3. Réponses: 4
    Dernier message: 07/01/2006, 18h36
  4. Réponses: 7
    Dernier message: 15/11/2005, 10h14
  5. [Struts]Ecrire un html:link à partir d'une chaine
    Par cowa dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/05/2004, 17h10

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