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 :

Comment créer une sorte de tableau de boutons dans une IHM


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut Comment créer une sorte de tableau de boutons dans une IHM
    Bonjour,

    Je souhaiterais créer une sorte de tableau contenant des boutons et que la taille de ce tableau puisse être paramétrable et évolutif. J'ai réussi facilement à la faire à l'intérieur d'un gridLayout et en bouclant dessus pour créer chacun de mes boutons. Mais le problème c'est que je ne sais pas comment y accéder ensuite pour leur attribuer une action, définir une taille pour chacun ...

    Dans chacun des tutoriels que je regarde, chacun des boutons est créé l'un après l'autre, on peut alors sans problème y accéder.

    Peut-on effectivement générer ainsi des boutons ?
    Ai-je utilisé le bon conteneur (gridLayout) ?
    ...

    Merci de vos réponses.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Si j'ai bien compris, tu veux pouvoir acceder aux boutons apres les avoir créés et ajoutés à l'aide d'une boucle de un GridLayout ?

    Déjà, oui, je pense que le GridLayout est le bon choix pour ce que tu veux faire. Ensuite, on pourrait voir un bout de code pour voir où tu en es pour le moment ?
    Et, tu peux faire un tableau de JButton où tu les initialises tous les boutons et les ajoutes au gridlayout avec une boucle, tu pourras ensuite acceder à chaque bouton grace au tableau.

  3. #3
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Tu peux ranger tes boutons dans une ArrayList, par exemple, ce qui te permet ensuite de pouvoir y re-accéder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ArrayList<JButton> boutons = new ArrayList<JButton>();
    while (ilFautEncoreDesBoutons)
    {
     JButton bouton = new JButton();
     panneau.add(bouton);
     boutons.add(bouton);
    }
    for (JButton bout : boutons)
    {
     bout.setText("L'heure système est : "+System.currentMillissecond());
    }
    Approximativement.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 44
    Points
    44
    Par défaut
    Ok voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JPanel panneau = new JPanel(new GridLayout(taille, taille));
     
    this.add(panneau);
     
    for (int i=0;i<taille;i++) {
            for (int j=0;j<taille;j++){
    	       panneau.add(new JButton());
    	}
    }
    Ensuite j'essayais de trouver des accesseurs mais sans résultats.


    Si je résume vos propositions, pour chaque bouton que je créé je les stocke dans une structure qui me permet d'y accéder. On a donc une dissociation entre l'affichage et le fonctionnement de l'application. C'est bien ça ?

    En tout les cas j'ai essayé votre solution et ça fonctionne très bien. Merci.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Ou encore étant donné qu'un JPanel est aussi un Container, tu peut utiliser les méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    add(Component )
    Component[] getComponents()
    Component getComponent(int i)
    remove(int index )
    remove(Component )
    removeAll()
    Il existe même des ContainerListener qui te permettent d'écouter l'ajout où la suppressions de composants. Tu as add et remove pour les retirer. Utiliser une ArrayList est donc inutile. Un table de hashage ou une structure type arbre ( en changeant le comparateur ) peut être plus intéressante je pense.

    http://java.sun.com/javase/6/docs/ap...tComponent(int)
    http://java.sun.com/javase/6/docs/ap...rListener.html

Discussions similaires

  1. Boutons dans une ligne de tableau
    Par androz dans le forum C++Builder
    Réponses: 13
    Dernier message: 22/08/2009, 18h59
  2. Réponses: 1
    Dernier message: 30/04/2009, 17h19
  3. Réponses: 1
    Dernier message: 22/06/2008, 22h47
  4. Réponses: 2
    Dernier message: 05/10/2007, 23h49
  5. Réponses: 8
    Dernier message: 23/03/2007, 01h14

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