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

Agents de placement/Fenêtres Java Discussion :

Retrouver les composants d'un JFrame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut Retrouver les composants d'un JFrame
    Bonjour,

    J'utilise un JFrame avec plein de composants swing(JLabel, JButton...etc).
    J'aurais besoin dans ma classe JFrame d'une methode qui me renvoie un des composants JLabel spécifique, par exemple repéré par son nom(String), ou par ses coordonnées dans le JFrame:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public JLabel getJLabelComponent(String componentName) {
         ???
    }
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public JLabel getJLabelComponent(int x, int y) {
         ???
    }
    Quelqu'un saurait-il comment s'y prendre ?

    Merci d'avance!

  2. #2
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    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
    18
    19
    20
    21
    22
    23
    24
    25
          public void clearContainer(Container container,boolean racine){
    932	
                    if (container!=null){
    933	
                            for (int i=0;i<container.getComponentCount();i++){
    934	
                                    if (container.getComponent(i) instanceof Container){
    935	
                                            clearContainer( (Container) container.getComponent(i),false);
    936	
                                    }
    937	
                                    container.getComponent(i).invalidate();
    938	
                                    container.remove(i);
    939	
                                    container.validate();
    940	
                            }        
    941	
                            container=null;
    942	
                    }
    943	
            }
    Voici un bout de code pour vider une fenêtre (en récursif), il faut l'adapter et utiliser le getName() du composant que tu souhaites retrouver.
    (c'est assez loin de ton problème, juste pour le principe)

    Perso j'anticipe ce genre de problème en gardant une réf sur le composant susceptible d'être modifié.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    Bonjour William,

    Merci pour cette réponse rapide!

    J'ai bien essayé d'utiliser la méthode 'this.getComponentCount()', mais celle-ci me renvoie "1", alors que j'ai de nombreux composants sur mon JFrame...
    Il semble que le seul "composant" accessible à ce nieau soit un JRootPane, et je ne maitrise pas ce type...

    Par rapport à ta suggestion pour anticiper ce type de problème, peux-tu me donner un exemple pour "garder une ref sur le composant" ?
    Quelle déclaration faire et à quel endroit du code ?

    Celà résoudra peut-être mon problème de manière plus simple.

  4. #4
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    tu fais simplement un arrayList <JComponent> MesComponents

    puis a chaque création : JLabel newLabel=new JLabel("");
    MesComponents.add(newLabel);

    Ensuite tu n'as plus qu'a parcourir MesComponents.get(indice).

    Pour ma part chaque component à un identifiant dans son getName() ainsi j'ai une méthode du genre get("Identifiant") qui me renvoi le bon component.

    je vais un peu plus loin encore mais c'est une autre histoire.

    sinon en simplifiant il y a les containers puis les panels, depuis ta frame tu as trouvé un panel(RootPane) maintenant il faut parcourir ton panel. Ce dernier peut contenir tes components et ou d'autres panels. Bref c'est un arbres ou il faut parcourir toutes les branches.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Par défaut
    L'utilisation d'un ArrayList répond parfaitement à mon besoin!

    Merci pour les conseils avisés!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Par défaut
    Sinon y'a ce snipet qui devrait convenir à tes besoins

    http://technology.amis.nl/blog/929/i...thod-for-swing

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2011, 11h45
  2. Réponses: 6
    Dernier message: 18/05/2010, 16h57
  3. Comment raffraichir tous les composants d'un JFrame.
    Par zuzuu dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 01/04/2009, 08h57
  4. Retrouver les tables composant une vue
    Par xilay dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/03/2005, 20h52
  5. retrouver les compsants FASTNET sous Delphi 7
    Par fandor7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/06/2003, 18h11

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