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

avec Java Discussion :

accéder à un vecteur autre Frame


Sujet :

avec Java

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut accéder à un vecteur autre Frame
    Bonjour,

    Je me pose une petite question, comment puis-je accéder à un vecteur d'objets déclarer dans ma jFrame1 depuis ma jFrame2 ?

    J'ai bien tenté de passer ma jFrame1(où le vecteur est déclaré) dans la construction de la jFrame2 comme ceci :
    Code dans la jFrame1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Ouverture de la jFrame2
    new jFrame2().setVisible(true);
    Code dans la jFrame2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Construction de la jFrame2
    new jFrame2(jFrame1).setVisible(true);
    merci

    edit : petit détail : lorsque je ferme ma jFrame2 (croix rouge en haut a droite) cela ferme aussi la jFrame1, et j'aimerai que seule la jFrame2 se ferme

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    fait un un geter dans ta frame1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Vector<String> getMaVar(){
       return this.MaVat;
    }
    comme cela ta frame 2 peut récupérer ton vecteur.

    pour ce qui est de la frame2 qui ferme ton application il faut que tu change la defaultcloseoperation

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    en fait je dois mettre ceci dans ma jframe1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public Vector<clients> getVector() {
            return this.clients;
        }
    mais comment je récupère dans la jFrame2 mon vecteur? je n'arrive pas à accéder à la méthode getVector() depuis la jFrame2...

    Et si par exemple je veux accéder à des objets tels que les labels de ma jFrame1, il faut faire toujours ceci ? Il n'y a pas moyen de passer toute la jFrame1 vers la jFrame2?

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    Je suppose que c'est peu de chose ce que je demande mais ça me bloque pour mon application...

    Il faut que je redéclare mon vecteur dans la jFrame2 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Vector... new...
    et que je fasse dans la jFrame2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vecteur = getVector()
    ?

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    Bonsoir,

    j'ai réussi à récupérer mon vecteur grâce à votre méthode, donc merci

    par contre comment cela se passe si je souhaite accéder à une procédure présente dans la jFrame1 depuis la jFrame2 ?

    Car si je ne peux pas accéder à cette procédure, je suis obligé de la ré-écrire dans ma jFrame2?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu dois passer la référence à la frame 1 au constructeur de la frame 2, comme ça la frame 2 pourra accéder à toutes les méthodes publiques de frame 1.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    ok

    et au niveau du code, cela consiste à faire quoi en fait?

    Copier une partie du code de la jFrame1 dans la jFrame2?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    transférer la référence, comme tu le ferais avec n'improte quel objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Jframe2 f2 = new JFrame2(frame1);
     
     
     
    public class JFrame2 ...... {
        private JFrame2 frame2;
     
        public JFrame2(frame2) {
            this.frame2=frame2;
        }
        ......
        frame2.uneMethode();
    }

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    en fait j'avais déjà quelque peu essayé cette méthode,

    j'ai d'un coté de ma jFrame1, l'action du me bouton qui ouvre ma jFrame2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new jFrame2().setVisible(true);
    et dans la jFrame2 j'ai le code classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class jFrame2 extends javax.swing.JFrame {
     
    ...
     
    public jFrame2 () {
       initComponents();
    }
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new jFrame2().setVisible(true);
                }
            });
        }
    et si je passe jFrame1 dans la jFrame2, soit je la mets au mauvais endroit, soit cela ne marche pas

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    montre le code qui marche pas, qu'on te le corrige, là tu passe rien au constructeur.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    il faut que tu utilise ton constructeur de frame2 qui prend ta frame1 en parametre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new jFrame2(this).setVisible(true);

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    montre le code qui marche pas, qu'on te le corrige, là tu passe rien au constructeur.
    Dans ce que je montre au dessus, je ne passe rien en paramètre, car je ne sais pas trop ou il faut passer en référence ma jFrame1 justement.

    rolfone :

    Si je mets ceci dans ma jFrame1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new jFrame2(this).setVisible(true);
    il me met cannot find symbol...

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par piero53 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new jFrame2(this).setVisible(true);
    il me met cannot find symbol...
    met le message d'erreur complet du compilateur, tronqué comme ça, on ne sais meme pas de quel symbole il parle.

  14. #14
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    ok :

    cannot find symbol

    symbol : constructor jFrame2(aplication.jFrame1)
    location : class aplication.jFrame2

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu n'a pas créé de constructeur prenant en paramètre un JFrame1, voir le code d'exemple plus haut

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    ok je vois,

    j'ai donc dans ma jFrame1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private  void jBtnAjouterActionPerformed(java.awt.event.ActionEvent evt) {                                           
           new jFrame2(this).setVisible(true);
    }
    et dans ma jFrame2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public  class jFrame2 extends javax.swing.JFrame {
     
        ...
        private jFrame1 jf1;
     
        public jFrame2(jFrame1 jf1) {
           this.jf1 = jf1;
           initComponents();
        }
    Grâce à ceci j'arrive bien à accéder aux méthodes de ma jFrame1 depuis la jFrame2

    Par contre pour le code restant de la jFrame2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public static  void main(String args[]) {
             java.awt.EventQueue.invokeLater(new Runnable() {
                 public void run() {
                     new jFrame2().setVisible(true);
                 }
             });
    il faut aussi passer en référence la jFrame1? Car j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cannot find symbol
     
    constructor jFrame2

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    sauf que la on est dans le main, y a pas de JFrame1. A toi de décider, dans la logique de ton programme, ce qu'il faut faire. Créer une JFrame1, passer un nul, utiliser un autres constructeur, etc

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    non la c'est que le compilateur ne trouve pas de constructeur sans parametre dans ta frame2

    si ta frame2 peut être lancé sans frame 1 il faut en crée un

    sinon tu n'a pas besoin de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public static  void main(String args[]) {
             java.awt.EventQueue.invokeLater(new Runnable() {
                 public void run() {
                     new jFrame2().setVisible(true);
                 }
             });
    tu peut le supprimer

    ps : il y a d'autre possibilités comme le dit tchize_

  19. #19
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Points : 105
    Points
    105
    Par défaut
    ok je ne savais pas qu'on pouvais supprimer cette partie de code

    en la supprimant cela fonctionne parfaitement !

    en fait à quoi sert cette méthode main ?

    merci à vous

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par piero53 Voir le message
    en fait à quoi sert cette méthode main ?

    Tu devrais peut-être commencer par quelques "Hello World", les interfaces graphiques ce n'est clairement pas le plus facile pour débuter en Java...

    La méthode "main" c'est le point d'entrée lorsque tu exécutes ton programme.

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

Discussions similaires

  1. accéder au body d'un frame à partir d'un autre frame
    Par ramroum1986 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2011, 14h21
  2. Comment accéder à un lien hypertexte dans un autre frame ?
    Par pdtor dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2006, 15h56
  3. Réponses: 2
    Dernier message: 17/06/2005, 16h56
  4. Réponses: 6
    Dernier message: 21/03/2005, 13h22
  5. [vbscript] écrire dans un autre frame
    Par gremar dans le forum ASP
    Réponses: 3
    Dernier message: 01/03/2005, 17h30

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