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

 Java Discussion :

Accès à une JFrame


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut Accès à une JFrame
    slt à tous,une fois de plus je viens sollicité votre aide et en espérant pouvoir
    aussi demain aide autant.
    voici je n'arrive pas depuis une JDialog à récupérer le contenu d'un JTextfield d'une J Frame. La valeur qui m'est retourne est null.
    voici un le code:

    String val=voir.txtlogin.getText().trim();
    System.out.println(val);

    ou val est une variable de ma JDialog qui retourne null,et voir ma JFrame

    que faire?

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Il vient d'ou ton "voir"?

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Il nous faudrait un peu plus de code

    autrement : String val=voir.txtlogin.getText().trim();
    txtlogin doit être ton JTextField je suppose, et c'est une variable public?
    Et le trim().... c'est quoi oO, il n'y en a pas besoin ici.

    Je te conseillerais d'utiliser des variables private, ça fait plus propre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Dans la classe de la JFrame
    private JTextField textFieldLogin;
    //...
     
    public String getLogin(){
       return textFieldLogin.getText();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Dans la JDialog
    System.out.println(instanceDeJFrame.getLogin());

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut Quelques précisions
    Si vous posez cette question, je suppose que votre JDialog est une classe à vous qui sous-classe JDialog.
    Dans ce cas, il suffirait d'ajouter simplement en paramètre de son constructeur le passage du JTextField concerné, cela vous éviterait d'avoir à modifier la nature (private ou public) de votre JTextField et/ou de créer une méthode supplémentaire public dans votre JFrame pour permettre la récupération de son contenu.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut Accès à une JFrame
    excuse moi pour le lège bout de code voici un extrait de code un peut plus complet.
    chez ma Jframe
    code:
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
       public class Testframe extends javax.swing.JFrame {
     
        /** Creates new form Testframe */
        public Testframe() {
            initComponents();
     
        }
     
     
            valider.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    validerActionPerformed(evt);
                }
            });
     
    		}
     
        private void validerActionPerformed(java.awt.event.ActionEvent evt) {
     
            Testdialog dialog =new Testdialog(this,true);
            dialog.setVisible(true);
     
     
        }
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Testframe().setVisible(true);
                }
            });
        }
     
        // Variables declaration 
        private javax.swing.JButton annuler;
        private javax.swing.JLabel login;
        private javax.swing.JLabel password;
        private javax.swing.JTextField txtlogin;
        private javax.swing.JPasswordField txtpassword;
        private javax.swing.JButton valider;
     
         public void setlogin(String log){
             txtlogin.setText(log);
         }
         public void setpassword(String log){
             txtpassword.setText(log);
         }
         public String getlogin(){
              System.out.println("login= "+txtlogin.getText());
             return txtlogin.getText();
         }
         public String getpassword(){
             String pswd;
             return pswd=new String(txtpassword.getPassword());
         }
     
    }
    ici la méthode initComponent() chez le constructeur initialise les variables

    chez ma Jdialog code:
    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 Testdialog extends javax.swing.JDialog {
       Testframe frame = new Testframe();
     
        public Testdialog(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            inser();
        }
        public void inser(){
     
            System.out.println(frame.getlogin());
            System.out.println(frame.getpassword());
        }
    }
    comme je vous le disait le résultat affiche par ma jdialog est une chaîne vide tant pour le login et le mot de passe.
    merci pour toute aide

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut Ok
    Cela me semble parfaitement normale que votre de visualisation montre des chaînes vides. Dans votre classe TestDialog, vous créé une nouvelle instance de TestFrame ?!
    Pour commencer je ne vois pas l'interret d'instancier TestFrame dans TestDialog. De plus, vos lignes System.out.println vont chercher leur valeurs dans cette instance qui n'a même pas été affichée à l'écran et dont les champs texte sensé contenir l'identité de login sont forcément vide.
    Avant tout, il vous faut ajouter une variable de classe dans votre classe TestDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private TestFrame parent = null;  // A placer juste avant le premier constructeur.
    Puis, modifiez le constructeur de votre classe TestDialog comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Testdialog(TestFrame parent, boolean modal) {
        this.parent = parent;
        ........
        ....
    Ensuite, il ne reste plus qu'à modifier votre méthode de visualisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.out.println(parent.getlogin());
    System.out.println(parent.getpassword());
    Je penses que là, ça fonctionnera. En tout cas, d'après votre code, s'il est exécuté sans changement vous devriez vous retrouver avec deux fenêtre chargée en mémoire, une affichée à l'écran, et l'autre (celle de TestDialog) non affichée puisque seule la méthode main de votre classe TestFrame invoque setVisible(true). C'est pourquoi j'ai personnellement pris l'habitude de faire le setVisible(true) dans le constructeur ou la méthode d'initialisation de mes classes swing, dans votre cas, cela vous aurait permis de remarquer que application ouvre deux fenêtre et que vous n'allez pas chercher vos infos dans la bonne.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Rendre impossible l'accès à une JFrame
    Par freeway57 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 18/07/2014, 09h41
  2. Interdire l'acces à une Jframe "mere" ?
    Par pierre.zelb dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 20/06/2005, 13h29
  3. Refus d'accès à une base Firebird
    Par severine dans le forum Installation
    Réponses: 18
    Dernier message: 04/06/2003, 16h03
  4. [Dev-C++] Accès à une base MySQL
    Par Beetlejuice dans le forum Dev-C++
    Réponses: 8
    Dernier message: 08/05/2003, 13h17
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39

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