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 :

[Swing] Raffraichissement de panel


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut [Swing] Raffraichissement de panel
    Bonjour,
    j'ai un problème avec un des panel de mon interface.
    Dans cette interface il y a 2 boutons, "initialiser" et "générer".Quand l'utilisateur clique sur générer, des JTable et des JLabel apparraissent dans des panel et quand il clique sur initialiser tous les composants precedement généré sont supprimés.
    voila le code associé au clique sur le bouton"initialiser"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    //Zone1,2 et 3 sont les panels que je veux rafraichir
     
    Zone1.removeAll();
    Zone1.repaint(); 
    Zone2.removeAll();
    Zone2.repaint(); 
    Zone3.removeAll();
    Zone3.repaint();
    Zone1.revalidate();
    Zone2.revalidate();
    Zone3.revalidate();
    quand je clique sur initialiser tout fonctionne bien ( les composant dans les 3 zones sont éffacés) mais quand je veux de nouveau générer, les nouveaux composant apparaissent avec les anciens (c'est comme s' ils avaient été gardé en mémoire et que j'avais juste changé leur visibilité...)

    quelqu'un a t'il une solution?

    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    tu peux essayer la méthode paintAll() après ton removeAll().

    Peux être devras-tu le faire aussi pour le panel parent de tes zones.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    Pourrais tu poster ton code qui te permets de générer ?

  4. #4
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    tu peux essayer la méthode paintAll() après ton removeAll().
    ça ne fonctionne pas

    le code lié à la génération des composants

    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
     
    //le code associé au clique sur bouton
     
    public void actionPerformed(ActionEvent e) {
     
            if (e.getSource() == Btn_generer) {
                Btn_generer.setEnabled(false);
                construire_Zone1();
                Zone1.revalidate();
     
            }
    }
     
    //la méthode de construction du panel
    public void construire_Zone1(){
            Btn_lancer.setEnabled(true);
            nb_ressource = Integer.parseInt (Text_nb_ressource.getText());
            nb_processus = Integer.parseInt (Text_nb_processus.getText());
            Zone1.add(box_attribue, BorderLayout.NORTH);
            box_attribue.add(new JLabel("Ressources attribuées"));
            Zone1.add(box_demande, BorderLayout.CENTER);
            box_demande.add(new JLabel("Ressources demandées"));
            Zone1.add(box_dispo, BorderLayout.SOUTH);
            box_dispo.add(new JLabel("Ressources disponibles"));
            construire_tableau_vide (nb_ressource, nb_processus, table, box_attribue);
            construire_tableau_vide (nb_ressource, nb_processus, table2, box_demande);
            construire_tableau_vide (nb_ressource,1, table3, box_dispo);
            Zone1.revalidate();
     
        }
     
    //la méthode pour construire les JTables
     
    public void construire_tableau_vide (int c,int l, JTable nom, Container k){
            nom_colonne = new String[c];
            nom_ligne = new String[l];
     
            //on nomme les colonnes
            for (int i = 0; i < c; i++){
                nom_colonne[i] = "R" + i;
            }
     
            //on nomme les lignes 
            for (int i = 0; i < l; i++){
                nom_ligne[i] = "P" + i;
            }
     
            nom = new JTable(new Object[l][c],nom_colonne);
            k.add(nom.getTableHeader());
            k.add(nom);
        }
    ps: tout n'est surement pas optimal ni tres propre mais bon soyez indulgent je débute ^^

  5. #5
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    En fait ton soucis provient je pense des tes :

    box_attribue
    box_demande
    box_dispo

    En effet il contienne toujours les anciens composants créés auparavant .. vu qu'ils sont déclarés selon toutes vraisemblances de manière globale..
    Je suis sûr que si tu les déclares de façon locale (dans ta mèthode en fait !) tout ira bien .. L'autre solution consisterait à les vider avant des leur rajouter des composants !!


    public void construire_Zone1(){
    Btn_lancer.setEnabled(true);
    box_attribue.removeAll();
    box_demande.removeAll();
    box_dispo.removeAll();
    nb_ressource = Integer.parseInt (Text_nb_ressource.getText());
    nb_processus = Integer.parseInt (Text_nb_processus.getText());
    Zone1.add(box_attribue, BorderLayout.NORTH);
    box_attribue.add(new JLabel("Ressources attribuées"));
    Zone1.add(box_demande, BorderLayout.CENTER);
    box_demande.add(new JLabel("Ressources demandées"));
    Zone1.add(box_dispo, BorderLayout.SOUTH);
    box_dispo.add(new JLabel("Ressources disponibles"));
    construire_tableau_vide (nb_ressource, nb_processus, table, box_attribue);
    construire_tableau_vide (nb_ressource, nb_processus, table2, box_demande);
    construire_tableau_vide (nb_ressource,1, table3, box_dispo);
    Zone1.revalidate();

    }

  6. #6
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    Merci bcp pour ta réponse,
    tes solutions fonctionnent toutes les 2.J'ai opté pour la solution du vidage des box avant génération.Je ne sais pas si c'est bien plus "propre" que d'instancier à chaque fois 3 nouvelles Box et de les supprimer après initialisation.
    Encore merci pour ton aide ^^

  7. #7
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Points : 148
    Points
    148
    Par défaut
    moi ce que je ferais ... c'est que je mettrais tout tes éléments en global (il ne serait instancié qu'une fois) et je remplirais ou viderais la container à ma guise en changeant la valeur des labels suivant les cas.

    Donc mets tout en global !!

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

Discussions similaires

  1. [Swing] Empiler deux panels l'un sur l'autre
    Par Babas007 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/03/2011, 16h41
  2. [Debutant Swing] Taille des panels variable
    Par NhyMbuS dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/01/2006, 09h11
  3. [design][swing] design pour property panel réutilisable
    Par mlequim dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 26/11/2005, 22h07
  4. [Swing] Vues et panels
    Par yyoussef dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 24/11/2005, 23h32
  5. [SWING] Centrer un panel
    Par Tips dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 18/11/2005, 19h11

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