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

AWT/Swing Java Discussion :

indicer des JPanels, est ce possible ?


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 56
    Points
    56
    Par défaut indicer des JPanels, est ce possible ?
    Bonsoir,

    je voudrais savoir s'il existe une facon d'indicer des JPanels de manière directe ou indirecte.

    Je m'explique:
    Etant sur un projet de simulateur de portes nand, or et autres, j'ai réalisé une interface graphique(sommaire pour le moment) qui ressemble à ca:



    Le code qui m'a permis de rajouter ceux ci sur la frame principale est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int i=0;i<entrees.length;i++)
             { 
                      test = new PanelEntrees(entrees[i]);
                                          EntreFrame.add(test);
              }
    Sans trop le détailler, EntreFrame est comme vous pouvez le voir, le Panel gauche qui contient tous les sous panels "test" que je souhaiterais indicer.
    PanelEntrees etant un JPanel contenant tout le code qui permet de rajouter les boutons et le nom de l'entrée.J'aimerai donc indicer les JPanels qui se trouvent sur la gauche contenant le nom des "entrées" et les boutons "0","1","Z" de façon à pouvoir acceder à l'état des boutons pour chaque JPanel/entrées.

    Tout cela en fait pour une raison: je souhaite remplir un tableau contenant les valeurs des entrees qui sont soit "0","1" ou "Z" car j'ai besoin de celles-ci pour réaliser un chronogramme.
    Et j'en reviens à mon problème, du moins je ne vois que cette solution : suivant l'entree indicée selon [i] par exemple, les boutons sont liés par un ButtonGroup, donc la fonction isSelected() me permet de savoir lequel est actif et suivant la valeur, je remplis mon tableau.

    Voila, je m'obstine peut être dans une voie mais je ne peux pas passer autrement que par ce tableau de valeur que je dois remplir. Mais toute idée est la bienvenue pour m'apporter le recul que je n'ai pas pour y voir plus clair !

    Merci et bonne soirée.[/b]

  2. #2
    Membre habitué Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Points : 148
    Points
    148
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JPanel[] tdp;
    tdp = new JPanel[10];
    tdp[1] = ...
    tdp[2] = ...
    ...
    Non?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    ah !
    j'ai essayé de faire ca, mais je l'ai mal fait et du coup, j'ai cru qu on ne pouvait pas faire de tableaux de JPanels !
    Merci beaucoup !

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 859
    Points
    22 859
    Billets dans le blog
    51
    Par défaut
    Ou une java.util.List<JPanel> (utiliser plutot LinkedList qu'une ArrayList si ton nombre de panel varie beaucoup).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Je vais regarder de ce côté la aussi. Cependant, j'ai encore un problème ou plusieurs d'ailleurs =)

    J'ai bien crée ma liste de JPanel dans un tableau, le prog marche comme avant, donc de ce côte la, pas de problèmes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tdp=new JPanel[entrees.length];
                                   for(int i=0;i<entrees.length;i++)
                                      {
                                          tdp[i] = new PanelEntrees(entrees[i]);
                                          EntreFrame.add(tdp[i]);
                                      }
    Bon jusque là, ca va.
    Ensuite dans ma classe PanelEntrees(extends JPanel), j'ai ca :
    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
     public PanelEntrees(String s1){
     
            setLayout(new BorderLayout());
            setPreferredSize(new Dimension(149,62));
            setBorder(BorderFactory.createLineBorder(Color.black));
     
            //Pour les entrees.
            // Création d'un panel pour chaque entrée/sorties.
            entreeG=new JPanel(new BorderLayout());
            Nom = new JLabel(s1,JLabel.CENTER);
            Nom.setFont(FenetreSimulation.Mapolice);
            entreeG.add(Nom, BorderLayout.CENTER);
            entreeG.setBackground(Fond);
            add(entreeG, BorderLayout.CENTER);
     
            // Création du JPanel contenant les boutons.
            entreeD=new JPanel();
            entreeD.setLayout(new FlowLayout(0, 0, 0));
            entreeD.setPreferredSize(new Dimension(43, 62));
            //Définitions de boutons.
            etat0 = new JToggleButton("0");
            etat1 = new JToggleButton("1");
            etatZ = new JToggleButton("Z");
            etat0.setPreferredSize(new Dimension(43, 20));
            etat1.setPreferredSize(new Dimension(43, 20));
            etatZ.setPreferredSize(new Dimension(43, 20));
            // Ajout d'un groupe de bouton pour que deux boutons états ne soient pas activés au même moment.
            group1 = new ButtonGroup();
            group1.add(etat0);
            group1.add(etat1);
            group1.add(etatZ);
            //Ajouts des boutons.
            entreeD.add(etat0);
            entreeD.add(etat1);
            entreeD.add(etatZ);
            add(entreeD, BorderLayout.EAST);
     
            etat0.addActionListener(AL1);
        }
    public int getValeurEntree()
        {
            if(etat0.isSelected())
            {
                y=0;
            }
            if(etat1.isSelected())
            {
                y=1;
            }
     
            return y;
        }
    }
    Mon idée a donc été, comme je le disais, de vérifier l'état des boutons. J'ai commencé pour le moment avec "0" et "1".
    Dans ma classe principale qui fait appel a PanelEntrees, donc la où se situer la boucle (1er bloc de code): j'ai donc mes JPanel référencé suivant i qui normalement possède chacun leur lot de bouton 0,1,Z.
    Mais lorsque je fais par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int k=tdp[i].getValeurEntree();[
    il ne me reconnait pas la fonction. est-ce parce que j'appelle un int à partir d'une JPanel?' Ca ne devrait pas poser de problème, je crois.
    J'ai essayé de sauvegarder getValeur() dans une variable à l'interrieur de PanelEntree pour la reinvoquer directement tdp[i].variable,
    mais il n'en veut pas non plus... J'ai du mal définir ma variable ou je ne sais quoi.

    Merci pour votre aide, si vous avez des idées !

  6. #6
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Le code correct est Mais je crois ce n'est pas le comportement que tu désires.

    Dans ton cas, il serait mieux de créer de nouvelles classee qui représente une porte logique. Une classe qui représente le modèle logique de ta porte et une autre qui est la représentation graphique de cette porte.

    Commentaire:
    Choisi un peu mieux le nom de tes varaiables et de tes classes.
    Bien le bonjour chez vous
    Jowo

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Merci, en fait, j'ai trouvé mon problème:
    le tablea que je créais étani un tableau de JPanel, je l'ai transformé
    en tableau de PanelEntrees et je pouvais executer ma fonction.

    (oui le crochet n'était pas voulu mais il n'y étaits pas dans le code)

    Cependant, le tout ne marche pas, je n'ai pas reussi à bien envoyer les valeurs dans le tableau apparemment.
    Lorsque tu me parles de créer de nouvelles classes, tu me suggères ca pour le fonctionnement globale du programme, non ?
    Car en fait, avant le simulateur, il y a un editeur de schéma qui marche relativement bien mais qui n'a pas été fait par moi.
    C'est un projet qui a été repris au fil des années et mon prédécesseur à fait du très bon boulot et à meme incorporé le fonctionnement du chronogramme qui exige d'envoyer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private char[] recupererValeursEntreesDansTableau()  {
            char[] valEntrees = new char[entrees.length];
            for (int i=0;i<entrees.length;i++)  {
     
                valEntrees[i] = valeurEntree2[i];
            }
            return valEntrees;
        }
    La c'est son code modifié mais il avait fait une jTable avec des checkbox pour chaque entree et verifiait si elles étaient cochées et en fonction de ca, inscrivait '0' ou '1' dans le tableau de char.
    Mon projet est d'améliorer grandement le simulateur sur ses bases, car le sien était très sommaire en terme de fonction. Donc dans l'idéal, il faut que je trouve le moyen de renvoyer l'état des boutons pour chaque panel crée.

    En tout cas, merci pour votre aide et concernant ton commentaire, peux tu me donner un exemple de bon choix de variables/classes ? Merci

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

Discussions similaires

  1. [Smarty] Masquer le contenue des .tpl, est-ce possible?
    Par atmoner dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 16/10/2011, 15h34
  2. Ajouter un JComponent dans un JPanel est ce possible?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 23/04/2007, 21h02
  3. Réponses: 1
    Dernier message: 26/06/2006, 11h33
  4. [FLASH MX2004] Boucle sur des clips est-ce possible ?
    Par vbcasimir dans le forum Flash
    Réponses: 4
    Dernier message: 09/02/2006, 09h00
  5. Un JLabel superposé à un JPanel...est ce possible ?
    Par Meriadoc dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/02/2005, 00h37

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