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 :

effacer un container


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut effacer un container
    Salut,
    J'ai 2 container(JPanel) pan et pan2, pan2 est dans pan
    J'aimerais a un moment précis ôter pan2 de pan, voila comment je procède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                               pan.remove(pan2);
                               pan.repaint();
                               pan.revalidate();
    cela ne fonctionne pas, pourtant lorsque je redimensionne ma fenêtre pan2 s'efface quand même.
    Merci de votre aide

  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
    peux tu mettre plus de code s'il te plait


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    panel.remove(pan2);
    panel.revalidate();
    panel.repaint();

  3. #3
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par william44290 Voir le message
    peux tu mettre plus de code s'il te plait
    oui voici mes sources (je débute un peu en appli java) :
    Fenetre.java:
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    package facture;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JTextField;
     
    /**
     *
     * @author pj
     */
    public class Fenetre extends JFrame {
        private JMenuBar menuBar=new JMenuBar();
        private JMenu menu1=new JMenu("Adresses");
        private JMenu menu2=new JMenu();
        private JMenuItem item11=new JMenuItem("Ajouter");
        private JMenuItem item12=new JMenuItem("Carnet d'adresses");
        private JMenuItem item13=new JMenuItem();
     
        private JLabel nom1=new JLabel("Nom, Prénom");
        private JLabel email1=new JLabel("Adresse Email");
        private JLabel telephone1=new JLabel("Téléphone");
        private JLabel fax1=new JLabel("Fax");
     
        private JLabel nomEntreprise1=new JLabel("Nom de l'entreprise");
        private JLabel adresse1=new JLabel("Adresse");
        private JLabel codePostal1=new JLabel("Code-Postal");
        private JLabel ville1=new JLabel("Ville/Village");
        private JLabel siret1=new JLabel("Siret");
     
        private JTextField nom2=new JTextField("");
        private JTextField email2=new JTextField("");
        private JTextField telephone2=new JTextField("");
        private JTextField fax2=new JTextField("");
     
        private JTextField nomEntreprise2=new JTextField("");
        private JTextField adresse2=new JTextField("");
        private JTextField codePostal2=new JTextField("");
        private JTextField ville2=new JTextField("");
        private JTextField siret2=new JTextField("");
     
        private JButton boutonAdresse=new JButton("Sauvegarder");
        public Fenetre() {
            this.setTitle("Titre");
            //this.setAlwaysOnTop(true);
            this.setSize(800, 600);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            final Panneau pan=new Panneau();
            pan.setBackground(Color.BLUE);
            pan.setLayout(new BorderLayout());
            this.setContentPane(pan);
                    final Panneau pan2=new Panneau();
                    pan2.setLayout(new GridLayout(10,2));
            item11.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    //System.out.println("BlaBla");
                    boutonAdresse.setSize(new Dimension(100, 30));
                    boutonAdresse.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent arg0) {
                           //System.out.println("Clike !");
                           Adresse adresse=new Adresse();
                           adresse.setNom(nom2.getText());
                           adresse.setEmail(email2.getText());
                           adresse.setTelephone(telephone2.getText());
                           adresse.setFax(fax2.getText());
                           adresse.setNomEntreprise(nomEntreprise2.getText());
                           adresse.setAdresse(adresse2.getText());
                           adresse.setCodePostal(codePostal2.getText());
                           adresse.setVille(ville2.getText());
                           adresse.setSiret(siret2.getText());
                           adresse.verifAjout();
                           if(adresse.getTest()==1) {
                               pan.remove(pan2);
                               pan.repaint();
                               pan.revalidate();
                               //System.out.println("ok !");
                           }
                       }
                    });
                    Font police=new Font("Arial", Font.BOLD, 12);
                    nom2.setFont(police);
                    nom2.setPreferredSize(new Dimension(300, 30));
                    email2.setFont(police);
                    email2.setPreferredSize(new Dimension(300, 30));
                    telephone2.setFont(police);
                    telephone2.setPreferredSize(new Dimension(300, 30));
                    fax2.setFont(police);
                    fax2.setPreferredSize(new Dimension(300, 30));
                    nomEntreprise2.setFont(police);
                    nomEntreprise2.setPreferredSize(new Dimension(300, 30));
                    adresse2.setFont(police);
                    adresse2.setPreferredSize(new Dimension(300, 30));
                    codePostal2.setFont(police);
                    codePostal2.setPreferredSize(new Dimension(300, 30));
                    ville2.setFont(police);
                    ville2.setPreferredSize(new Dimension(300, 30));
                    siret2.setFont(police);
                    siret2.setPreferredSize(new Dimension(300, 30));
                    pan2.add(nom1);
                    pan2.add(nom2);
                    pan2.add(email1);
                    pan2.add(email2);
                    pan2.add(telephone1);
                    pan2.add(telephone2);
                    pan2.add(fax1);
                    pan2.add(fax2);
                    pan2.add(nomEntreprise1);
                    pan2.add(nomEntreprise2);
                    pan2.add(adresse1);
                    pan2.add(adresse2);
                    pan2.add(codePostal1);
                    pan2.add(codePostal2);
                    pan2.add(ville1);
                    pan2.add(ville2);
                    pan2.add(siret1);
                    pan2.add(siret2);
                    Panneau panBut1=new Panneau();
                    panBut1.setLayout(new BorderLayout());
                    panBut1.add(boutonAdresse, BorderLayout.WEST);
                    pan2.add(panBut1);
                    pan.add(pan2, BorderLayout.NORTH);
                    pan.repaint();
                    pan.revalidate();
                 }
            });
            this.menu1.add(item11);
            this.menu1.add(item12);
            this.menuBar.add(menu1);
            this.setJMenuBar(menuBar);
            this.setVisible(true);
        }
    }
    Panneau.java :
    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package facture;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JPanel;
     
    /**
     *
     * @author pj
     */
    public class Panneau extends JPanel {
        public Panneau() {
            this.setBackground(Color.BLUE);
        }
        @Override
        public void paintComponent(Graphics g) {
            //this.setBackground(Color.ORANGE);
        }
     
    }
    Main.java :
    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package facture;
     
    /**
     *
     * @author pj
     */
    public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            Fenetre fenetre=new Fenetre();
        }
     
    }
    Merci !

  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
    peux tu tester ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    panel.remove(pan2);
    panel.revalidate();
    panel.repaint();

  5. #5
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par william44290 Voir le message
    peux tu tester ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    panel.remove(pan2);
    panel.revalidate();
    panel.repaint();
    J'obtiens le même résultat (le panel est vide seulement si on redimensionne)

  6. #6
    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
    public class Panneau extends JPanel {
        public Panneau() {
            this.setBackground(Color.BLUE);
        }
        @Override
        public void paintComponent(Graphics g) {
            //this.setBackground(Color.ORANGE);
    
    // Attention a l'Override
    super.paintComponent(g);
    
    
    
        }
     
    }

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 107
    Par défaut
    Alors deja dans ton code tu a un bug d'affichage. Quand tu clique pour la premiere fois sur ton menu ajouter, ca fonctionne bien. Mais si tu reclique une nouvelle fois dessus, là tu auras un problème dans la disposition de tes éléments.
    Tu n'as pas besoin d'ajouter tes élements à ton pan2 à chaque fois que tu clique sur le menu. Une fois est largement suffisant.

    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
    54
    55
    56
    57
    58
     
            this.setContentPane(pan);
     
            final Panneau pan2 = new Panneau();
     
            pan2.setLayout(new GridLayout(10, 2));
            boutonAdresse.setSize(new Dimension(100, 30));
            Font police = new Font("Arial", Font.BOLD, 12);
            nom2.setFont(police);
            nom2.setPreferredSize(new Dimension(300, 30));
            email2.setFont(police);
            email2.setPreferredSize(new Dimension(300, 30));
            telephone2.setFont(police);
            telephone2.setPreferredSize(new Dimension(300, 30));
            fax2.setFont(police);
            fax2.setPreferredSize(new Dimension(300, 30));
            nomEntreprise2.setFont(police);
            nomEntreprise2.setPreferredSize(new Dimension(300, 30));
            adresse2.setFont(police);
            adresse2.setPreferredSize(new Dimension(300, 30));
            codePostal2.setFont(police);
            codePostal2.setPreferredSize(new Dimension(300, 30));
            ville2.setFont(police);
            ville2.setPreferredSize(new Dimension(300, 30));
            siret2.setFont(police);
            siret2.setPreferredSize(new Dimension(300, 30));
            pan2.add(nom1);
            pan2.add(nom2);
            pan2.add(email1);
            pan2.add(email2);
            pan2.add(telephone1);
            pan2.add(telephone2);
            pan2.add(fax1);
            pan2.add(fax2);
            pan2.add(nomEntreprise1);
            pan2.add(nomEntreprise2);
            pan2.add(adresse1);
            pan2.add(adresse2);
            pan2.add(codePostal1);
            pan2.add(codePostal2);
            pan2.add(ville1);
            pan2.add(ville2);
            pan2.add(siret1);
            pan2.add(siret2);
            Panneau panBut1 = new Panneau();
            panBut1.setLayout(new BorderLayout());
            panBut1.add(boutonAdresse, BorderLayout.WEST);
            pan2.add(panBut1);
     
            item11.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent arg0) {
                    //System.out.println("BlaBla");                
                    pan.add(pan2, BorderLayout.NORTH);
                    pan.repaint();
                    pan.validate();
                }
            });
    La dans ce code j'ai sortis le ActionListener du bouton de celui du menu.

    Ensuite pour ce qui du fait qu'il ne redessine pas ton fond, comme l'a indiquer william44290, dans ta classe panneau tu as Override la méthode paintComponent sans appeler son super.paintComponent(g);

    C'est pour ca qu'il n'enlever pas à l'affichage ton pan2. En réalité tu n'avais plus de pan2 dans le pan mais comme ton paintComponent était mal rédéfinis, il ne redessiné pas le nouvel affichage. Et c'est aussi pour cette raison que tu n'avais pas ton fond bleu désiré.

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

Discussions similaires

  1. [Turbo C++] Fonciton containing for are not expanded inline
    Par BuG dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 17/02/2003, 06h48
  2. [VBA-E] [Excel] Effacer une feuille
    Par Tray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/01/2003, 10h04
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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