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 :

nommer un objet à partir d'une variable String


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut nommer un objet à partir d'une variable String
    Bonjour a tous ,

    je suis actuellement bloqué dans mon programme....

    public PanChan(String e) {


    String Nomrecepteur = "recepteur" + e;
    TextArea Nomrecepteur = new TextArea("", 50, 50, TextArea.SCROLLBARS_VERTICAL_ONLY);

    }

    Je voulais que mon objet TextArea est le nom recepteur + l'argument de la methode, mais je me retrouve avec une erreure biensure vu que l'objet Nomrecepteur est deja de type String , je ne peux pas le redeclarer en type TextArea.

    avez vous une solution à me proposer ?

    Loïc.

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Ce que tu cherches à faire est irréalisable en java.

    Pour contourner ce problème il suffit juste de créer une Collection destinée à contenir un nombre d'objets variables et d'y ajouter tes objets a leur création.
    La classe ArrayList convient parfaitement à cet usage.
    Si tu as obligtoirement besoin du nom tu peux également passer par une HashMap qui associe des paires clef/valeur

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut merci
    merci a toi pour m'avoir eclairci,
    j'avais un doute la dessus au moins maintenant je suis fixé et je sais ou cherché

    merci aussi pour ta rapidité de reponse

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut Bon en fait je n'y arrive pas .........
    je pensais avoir compris en passant par une hashmap, mais je me retrouve toujours bloqué au meme endroit....

    dès que je veux declarer mon TextArea je ne peux pas lui affecter un nom dynamique .....

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En fait dans ta hashmap tu vas ajouter une entry qui va contenir une String: le nom de ta JTextArea et une JTextArea et basta.

    De toute façon vouloir fixer un nom précis pour un objet n'as pas réellement de sens, ou peu d'utilité.

    En général une vulgaire ArrayList suffit pour stocker un nombre aléatoire d'objet.

    Ensuite si tu veux faire des action dessus il te suffit de parcourri ta collection

    Je t'en couragerais plutôt à repenser la façon dont tu veux procéder.
    Que veux tu faire exactement, pourquoi as tu besoin de fixer ce nom de variable?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut Bon je pense que tu as raison je suis mal parti c le serpent qui se mord la queue ...
    Donc en fait ce que je suis en train de construire c une applet qui se connecte a un IRC...

    tout de suite tout fonctionne en ce qui concerne la connection socket etc ....

    ce que je voulais faire c'est qu'a chaque fois que l'on joind un salon, un nouvel Onglet s'affiche avec son propre TextArea, TextField, Button etc ....

    et rediriger les messages du serveur sur les differents onglets en fonction des chan ....

    c'est pour cela que je voulais attribuer des noms dynamiques a des TextArea et autres ... pour pouvoir les localiser ensuite.....

    Voili voilou, mais là je commence a comprendre que je suis mal parti, je du penser a une mauvaise conception ....

  7. #7
    Membre confirmé
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par sinok
    La classe ArrayList convient parfaitement à cet usage.

    c'est n'est pas utile de donner un nom a tes nouvelle Jtext dans ce cas tu les ajoute simlement a un arraylist avec la methode add:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<JTextArea> list = new ArrayList<JTextArea>();
    list.add(new JTextArea());
    si tu veux tu peut rajouter une proprieter "nom" a ton JTextArea personaliser et comme ça ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<JTextArea> list = new ArrayList<JTextArea>();
    list.add(new JTextArea("le nom"));
    en tt cas il ya plusieur moyen de s'ensortir

    CORRECTIF !!!!!!

    je suis désolé de cette erreur le fait que JTextArea posséde déja un constructeur String m'ait complétement sortie de l'esprit, ce que je voulai dire qu'il etait possible de donner un nouvel attribut (entre autre "nom") au JTextArea et que ensuite on pouvait l'utiliser comme reference donc a priori ça donne ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<JTextArea> list = new ArrayList<JTextArea>();
    list.add(new JTextArea("","le nom"));
    mais cela dit en passant par Map c'est mieu

    encore merci de m'avoir corrigé (et pardon pour l'erreur )

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut oulaaa mais je savais pas ça !!
    Je n'avais pas compris que l'on pouvais faire ça avec les arraylist !!!

    je pensais qu'elles ignoraient le type de Contenu.... et là dans ton code, qd tu declare ArrayList tu specifie le contenu en JTextArea ???

    là forcement si on peut faire ça effectivement je vais m'en sortir là ....

    Bon je vais regarder les explications sur ArrayList parcequ'apparement j'ai lu de travers.....

    merci a toi !

  9. #9
    Membre confirmé
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Points : 554
    Points
    554
    Par défaut non..........
    dans un ArrayList tu peux mettre un "Object" le big boss, le dieu des dieux, tout ce que tu veux quoi.... et si j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<JTextArea> a = new ArrayList<JTextArea>();
    c'est pour limité l'entrée a seulement des JTextArea ça t'évite de faire du cast plus tard c'est tout

  10. #10
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par mhamedbj
    si tu veux tu peut rajouter une proprieter "nom" a ton JTextArea personaliser et comme ça ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<JTextArea> list = new ArrayList<JTextArea>();
    list.add(new JTextArea("le nom"));
    non !

    Le code que tu donnes ajoute un JTextArea dans lequel est affiché 'le nom' à une ArrayList tu n'associes pas un nom à l'objet JTextArea.

    Pour cela il faut passer par une Map comme l'a suggéré sinok.

    Merci de consulter la javadoc : public JTextArea(String text)

  11. #11
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En fait c'est bien au niveau conception que tu as un problème.

    Dans ton cas ce n'est absolument pas la JTextArea qui doit être l'élément pour déterminer ou ajouter la texte.

    Pour celà il te sera plutôt nécessaire d'avoir un modèle pour ton écran spécifique.

    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class ConversationModel {
     
    private String buddyName;
    private ArrayList<Message> messages;
     
    //...Getters et setters qui vont bien avec déclenchement d'events...
     
    public void appendMessage(Message m) {
    messages.add(m);
    fireRowAdded(m);   //cf lien filé plus loin pour comprendre l'utilité du fire..
    }
    }
    Ensuite tu vas coder dans cette classe des setters qui propagent des évènements, tu vas coder un Listener spécifique pout otn appli, un type d'event spécifique et ainsi de suite.

    Ce qui fait que ta classe contenant la JTextArea sera un vulgaire listener.

    Pour plus d'infos sur ces concepts tu as grand intérêt à lire ce cours: http://rom.developpez.com/java-listeners/ et à comprendre l'intérêt du pattern observer

    Pour affecter les messages lorsque tu les reçois, tu auras un controlleur qui contiendra une liste (ArrayList) de ConversationModel, il te suffira de la parcourrir pour trouver le bon ConversationModel par rapport à la variable buddy puis de faire un appendMessage.
    De ce fait le fireRowAdded va déclencher l'évènement et la classe contenant le JTextArea réagira automatiquement

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut Merci pour vos reponses !!!
    c'est extr

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 25
    Points
    25
    Par défaut desolé j'ai ripé ....
    donc je disais merci pour les reponses,

    Sinok Je pense avoir compris globalement ta methode mais comme tu dis

    je vais bosser les listerners pour bien comprendre ta reponse ...

    En tout cas je vous embete plus avec ça

    merci a tousssss

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2013, 18h39
  2. [CS5] dispatchEvent à partir d'une variable String
    Par Erikulum dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 09/01/2012, 07h37
  3. construire une liste a partir d'une variable string
    Par Palsajicoco dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 12/07/2011, 10h05
  4. Instancier une class a partire d'une variable string
    Par Assimil dans le forum ASP.NET
    Réponses: 7
    Dernier message: 25/06/2008, 16h47
  5. Réponses: 4
    Dernier message: 31/08/2006, 15h31

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