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

Composants Java Discussion :

Affecter une chaine de caractères au propriété text d'un jTextField


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Affecter une chaine de caractères au propriété text d'un jTextField
    Bonjour,
    je voudrais affecter une chaine de caractéres à partir d'une classe A au propriété text d'un jTextField d'une classe B, mais le problème c'est que jTextField est déclaré private, alors j'ai une solutuion de Setter et getter.
    le problème que je rencontre c'est que j ai une erreure dans les méthodes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public String getLien()
      {
              return jTextField1.text ;
      }
     
        public void setLien(string lien) {
        jTextField1.text = lien;
      }
    voila je vous remercie

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Tu devrais essayer JtextField.getText();

    Si ce n'est pas ça, peut tu poster l'erreur que tu reçois?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Points : 120
    Points
    120
    Par défaut
    Regarde par là : JTextfield

    Les méthodes get et set demande forcément un get et un set de ton composant. Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public String getLien() {
         return jTextField1.getText();
    }
     
    public void setLien(string lien) {
        jTextField1.setText(lien);
    }
    Edit : griller

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Je t'ai peut être grillé mais ton poste est mieux présenté

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    Je vous remercie pour votre aide, mais jai toujours une erreure dans la classe A , dans la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ClasseB.setLien(lien);
    le message d'erreure est : not static methode setLien cannot be referenced from a static context

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    T'as le choix entre créer une méthode static, ou alors créer une instance de ta classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static public void setLien(String tonTexte){
    }
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ClassB taClass = new ClassB();
    taClass.setLien(tonTexte);
    Tout dépend de ce que tu désires (méthode static ou non)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    j ai essayé de créer une méthode static mais j'étais obligé de meettre en dohrs la méthode static main de la classe A; et j ai tourjours une erreure suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static public void setLien(String CHEMIN){
    ClasseB.setLien(CHEMIN);// no static methode setLien..//
    }
    alors ca marche pas encore

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Tu devrais allez voir les tuto proposés sur developpez.com. Je pense que tu devrais commencer par lire un peu avant de vouloir coder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class ClassA{
     
      public void setLien(String lien){
     
        return JTextfield.setText(lien);
      }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class ClassB{
     
      public void taMethode(){
        ClassA maClass = new ClassA();
        maClass.setLien("Ta String");
      }
    }

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    c'est déja fait (j ai lu tuto) , mais le problème moi dans mon programme au debut j ai ma fenetre (classe B) et je click sur un buttton dans cette fenetre(classe B) pour avoir une fenetre A (classe A) et je garde toujours la fenetre B et fenetre A , alors quand je click sur un button de fenetre A je voudrais modifier un attribut privé de classe B
    j en ai pas besoin d'instancier une autre classe B car j en ai déja affichée
    je pense que j ai bien expliqué
    merci

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Tu peux donc mettre ta méthode static:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Class ClassA{
     
      public static void setLien(String lien){
     
        return JTextfield.setText(lien);
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class ClassB{
     
      public void taMethode(){
        ClassA.setLien("Ta String");
      }
    }

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    déja dans la méthode set on met pas de return car elle ne retourne rien , sinon ca marche pas encore
    car ca me donne erreure dans ma classe B :non static methode setLien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public  void setLien(String CHEMIN){
    RapprocheAutomatique.setLien(CHEMIN);
    }

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    J'ai mélangé mes getters et mes setters...

    dil54 déja dans la méthode set on met pas de return car elle ne retourne rien , sinon ca marche pas encore
    car ca me donne erreure dans ma classe B :non static methode setLien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void setLien(String CHEMIN){
    RapprocheAutomatique.setText(CHEMIN);
    }
    T as oublié de mettre ta méthode en static, et tu dois faire appelle a la méthode setText()

  13. #13
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    voila je vous montre mon code
    code de Classe A:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    package Rapprocher;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.MessageFormat;
    import java.util.ArrayList;
    import javax.swing.JFileChooser;
     
    public class FenetreSys {
       public static void main(String[] args) {
          JFileChooser dlg = new JFileChooser();
          dlg.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
          dlg.setApproveButtonToolTipText( "Séléctionner un fichier .csv" );
          int choix = dlg.showOpenDialog( null );
              if (choix == JFileChooser. APPROVE_OPTION ) {
                   String CHEMIN = dlg.getSelectedFile().getPath(); // retourne le chemin du fichier sélectionné
                   RapprocheAutomatique.setLien(CHEMIN);
               }
            }
     
    protected static String getPrimaryPath(File ref, File access) {
          String path = "";
          ArrayList refp = new ArrayList();
          for (File cur = ref; cur != null; cur = cur.getParentFile()) {
             String name = cur.getName();
             if (name.length() == 0)
                name = cur.getAbsolutePath();
             refp.add(name);
             //System.out.println("Ref : '" + name + "'");
          }
          ArrayList accp = new ArrayList();
          for (File cur = access; cur != null; cur = cur.getParentFile()) {
             String name = cur.getName();
             if (name.length() == 0)
                name = cur.getAbsolutePath();
             accp.add(name);
             //System.out.println("Acc : '" + name + "'");
          }
          if (refp.size() == 0 || accp.size() == 0)
             return path;
     
          if (refp.get(refp.size()-1).equals(accp.get(accp.size()-1))) {
             boolean equal = true;
             while (equal && refp.size() > 1 && accp.size() > 1) {
                refp.remove(refp.size()-1);
                accp.remove(accp.size()-1);
                equal = (refp.get(refp.size()-1).equals(accp.get(accp.size()-1)));
             }
     
             if (refp.size() == 1) {
                if (!equal) {
                   refp.remove(refp.size()-1);
                   path += ".." ;
                }
                else {
                   refp.remove(refp.size()-1);
                   accp.remove(accp.size()-1);
                   path += ".";
                }
             }
             else {
                if (equal && accp.size() == 1) {
                   refp.remove(refp.size()-1);
                   accp.remove(accp.size()-1);
                }
                while (refp.size() > 0) {
                   refp.remove(refp.size()-1);
                   path += ".." ;
                   if (refp.size() > 0) path += File.separator;
                }
             }
             while (accp.size() > 0) {
                String name = (String)accp.remove(accp.size()-1);
                path += File.separator;
                path += name;
             }
          }
          else {
             try {
                path = access.getCanonicalPath();
             } catch (IOException e) {
                path = access.getAbsolutePath();
                e.printStackTrace();
             }
          }
          return path;
       }
       public static String getDiffPath(File ref, File acc) {
          try {
             File cref = ref.getCanonicalFile();
             File cacc = acc.getCanonicalFile();
             return getPrimaryPath(cref, cacc);
          }
          catch (IOException e) {
             e.printStackTrace();
             return getPrimaryPath(ref, acc);
          }
       }
       public static String getDiffPath(String ref, String acc) {
          File fref = new File(ref);
          File facc = new File(acc);
          return getDiffPath(fref, facc);
       }
    et le code de la classe B:
    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
     
    package Rapprocher;
    public class RapprocheAutomatique extends javax.swing.JFrame {
        private String[] args;
     
        /** Creates new form RapprocheAutomatique */
        public RapprocheAutomatique() {
            initComponents();       
        }
     public String getLien() {
         return jTextField1.getText();
    }
     
     public  void setLien(String CHEMIN) {
         jTextField1.setText(CHEMIN);
    }
    et voila

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    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
    public class RapprocheAutomatique extends javax.swing.JFrame {
    	private String[] args;
    	
    	private static JTextField jTextField1 = new JTextField();
    
    	/** Creates new form RapprocheAutomatique */
    	public RapprocheAutomatique() {
    	}
    
    	public static String getLien() {
    		return jTextField1.getText();
    	}
    
    	public static void setLien(String CHEMIN) {
    		jTextField1.setText(CHEMIN);
    	}
    }
    Quand tu déclares une méthode static, n'oublie pas de déclarer les attribut qu'elle contient en static.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    c'est bon j'ai pu de trouver la solution, il fallait changer la déclaration de JtextFiel1 en private static et comme je travaille avec netbeans alors la déclaration est protégé bon enfin j ai changé sur la fenétre de propriétés
    je vous remercie

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Utiliser du static dans ce genre de cas est une aberration... Imagine que tu aies besoin d'avoir plusieurs classes B en même temps? Dans ce cas les valeurs des JTextfield de toutes les instances de B seraient changées au même moment. De plus un composant ne peut être ajouté qu'à un seul endroit. Ton composant Jtextfield étant static, tu n'en aura qu'une seule instance même si tu instancie N fois la classe. Autrement dit, ton programme plantera.

    Normalement tu ne devrais absolument pas avoir de static dans ton code sauf pour des méthodes purement unitaires.

    La solution ici est de proposer dans la classe B une méthode normale (donc non statique) pour modifier le contenu du Jtextfield et que la classe A possède une référence sur une instance de la classe B pour pouvoir appeler les méthodes de cette instance à volonté.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

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

Discussions similaires

  1. Comment trouver une chaine de caractère dans fichier texte
    Par youssef1989 dans le forum Débuter
    Réponses: 3
    Dernier message: 01/05/2008, 17h45
  2. Remplacer une chaine de caractère dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/01/2008, 12h16
  3. Recherche de texte dans une chaine de caractères
    Par julien20vt dans le forum Oracle
    Réponses: 7
    Dernier message: 19/12/2006, 11h02
  4. Réponses: 3
    Dernier message: 25/07/2006, 09h40
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 17h35

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