Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018 - Modifié le 27 déc. 2018 à 01:04
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 4 janv. 2019 à 16:44
Bonjour,

Mon but est de programmer une fenêtre dans laquelle je peux remplir les caractéristiques d'un point ( nom abscisse et ordonnée). Je veux ensuite que mon point s'affiche dans un panneau. Quand je lance mon programme, je rencontre cette erreur :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at projet_interface_graphique.Fenetre_Point.ok(Fenetre_Point.java:148)
at projet_interface_graphique.Fenetre_Point.access$000(Fenetre_Point.java:14)
at projet_interface_graphique.Fenetre_Point$1.actionPerformed(Fenetre_Point.java:62)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)

(il y a d'autres lignes mais il me semble que seules les premières sont importantes)

Dans la classe Fenetre-Point j'ai :
    int abs, ord;
    Panneau pane;
    Graphics g;
    private void ok(java.awt.event.ActionEvent evt) {                    
        nom = idPoint.getText();
        String s1 = abscisse.getText();
        abs = Integer.parseInt(s1);
        String s2 = ordonnee.getText();
        ord = Integer.parseInt(s2);
        pane.paintComponent( g, abs, ord); // <-- c'est cette ligne qui pose problème 
        dispose(); 
    }

Dans la classe Panneau :
public class Panneau extends JPanel {
    JPanel panel;
    public Panneau(){
        panel = new JPanel();
    }
    public void paintComponent(Graphics g, int abs, int ord) {
        super.paintComponent(g);
        g = getGraphics();
        Projet_interface_graphique.dessinPoint(g, abs, ord );
        repaint();
    }
}

et enfin dans la classe Projet_interface_graphique :
public class Projet_interface_graphique {

    
    //lance le programme
    public static void main(String args[]) {
        Fenetre fen = new Fenetre();
        fen.setVisible(true);

    }
    
    static void dessinPoint(Graphics g, int x, int y) {
        g.setColor(Color.GREEN);
        g.drawOval(x, y, 10, 10);
    }
}

Pouvez-vous m'indiquer quelle est mon erreur ? Je pense que ça vient de g mais je n'ai pas bien compris ce qu'est un graphics et je ne sais pas comment l'initialiser.

Merci beaucoup
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
27 déc. 2018 à 01:08
Bonjour,

Un NullPointerException sur
pane.paintComponent(g, abs, ord);
c'est forcément parce que
pane == null
.
Si le problème était sur g, abs ou ord, l'exception aurait eu lieu dans Panneau, pas dans Fenetre_Point.

Et si pane vaut null, c'est parce que tu ne fais jamais de
pane = new Panneau();
0
Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018
Modifié le 27 déc. 2018 à 17:19
Bonjour KX,
Je te remercie de ta réponse rapide cependant j'ai ajouté le pane = new Panneau() et ça ne fonctionne toujours pas.
J'ai un peu modifié mon programme :

Fenetre_Point :
    private void ok(java.awt.event.ActionEvent evt) { 
        System.out.println("Clic sur OK");
        nom = idPoint.getText();
        String s1 = abscisse.getText();
        abs = Integer.parseInt(s1);
        String s2 = ordonnee.getText();
        ord = Integer.parseInt(s2);
        pane = new Panneau();
        pane.paintPoint( g, abs, ord);
        dispose(); 
   }

Panneau :
public class Panneau extends JPanel {
    JPanel panel;
    public Panneau(){
        panel = new JPanel();
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       
    }
    public void paintPoint(Graphics g, int abs, int ord){
        super.paintComponent(g);
        g = getGraphics();
        Projet_interface_graphique.dessinPoint(g, abs, ord );
        repaint();        
    }
}

Projet_interface_graphique :
public class Projet_interface_graphique {
    public static void main(String args[]) {
        Fenetre fen = new Fenetre();
        fen.setVisible(true);
    }
    static void dessinPoint(Graphics g, int x, int y) {
        g.setColor(Color.GREEN);
        g.drawOval(x, y, 10, 10);
    }
}

Fenetre : (JFrame)
Fenetre() {
        //Initialise les composants
        initComponents();
        // titre de la fenêtre
        setTitle("Dessin 2D");
        //taille écran
        Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension dimEcran = tk.getScreenSize();
        int largeur = dimEcran.width;
        int hauteur = dimEcran.height;
        setSize(largeur, hauteur);
        //ajoute le panneau à la fenêtre (frame)
        panneau = new Panneau();
        getContentPane().add(panneau);
    }

J'ai maintenant une erreur de ce type quand j'appuie sur ok dans fenêtre point :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:800)
at projet_interface_graphique.Panneau.paintPoint(Panneau.java:28)
at projet_interface_graphique.Fenetre_Point.ok(Fenetre_Point.java:141)
at projet_interface_graphique.Fenetre_Point.access$000(Fenetre_Point.java:14)
at projet_interface_graphique.Fenetre_Point$1.actionPerformed(Fenetre_Point.java:62)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)

Peux-tu m'aider à nouveau ?
Merci beaucoup
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127 > Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018
27 déc. 2018 à 17:22
Ton code est incomplet, mais lorsque tu fais
pane.paintPoint( g, abs, ord);
que vaut
g
?

Je pense que ta méthode paintPoint ne devrait pas exister.
Il faudrait que j'ai le code complet et quelques explications pour comprendre ce que tu essaies de faire car à mon avis tu es parti du mauvais pied...
0
Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018
Modifié le 28 déc. 2018 à 13:26
Voici mon code complet :

package projet_interface_graphique;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 *
 * @author Gaëlle
 */
public class Projet_interface_graphique {
    //lance le programme
    public static void main(String args[]) {
        Fenetre fen = new Fenetre();
        fen.setVisible(true);
    }
    static void dessinPoint(Graphics g, int x, int y) {
        g.setColor(Color.GREEN);
        g.drawOval(x, y, 10, 10);
    }
}

package projet_interface_graphique;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 *
 * @author Gaëlle
 */
public class Fenetre extends JFrame{
    //attributs de la classe 
    private JPanel panneau;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenu creation;
    private javax.swing.JMenuItem point;
    //constructeur de la Frame
    Fenetre() {
        //Initialise les composants
        initComponents();
        // titre de la fenêtre
        setTitle("Dessin 2D");
        //taille écran
        Toolkit tk = Toolkit.getDefaultToolkit();
        Dimension dimEcran = tk.getScreenSize();
        int largeur = dimEcran.width;
        int hauteur = dimEcran.height;
        setSize(largeur, hauteur);
        //ajoute le panneau à la fenêtre (frame)
        panneau = new Panneau();
        getContentPane().add(panneau);
    }
    //initialisation des composants
    private void initComponents() {
        // Barre menu
        jMenuBar1 = new javax.swing.JMenuBar();
        //option dans barre menu
        creation = new javax.swing.JMenu();
        jMenuBar1.add(creation);
        creation.setText("Création");
        //option dans création (Point)
        point = new javax.swing.JMenuItem();
        point.setText("Point");
        creation.add(point);
        point.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pointActionPerformed(evt);
            }
        });
    }
}

package projet_interface_graphique;
import java.awt.Graphics;
/**
 *
 * @author Gaëlle
 */
public class Fenetre_Point extends javax.swing.JFrame {
    String nom;
    int abs, ord;
    Projet_interface_graphique projet;
    Graphics g ;
    Panneau pane ;
    /**
     * Creates new form Fenetre_Point
     */
    public Fenetre_Point() {
        initComponents();
    }
        setJMenuBar(jMenuBar1);
        pack();
    }
    //Clic sur point 
    private void pointActionPerformed(java.awt.event.ActionEvent evt) {                                      
        System.out.println("Clic sur Créer un Point");
        Fenetre_Point fenPoint=new Fenetre_Point();
        fenPoint.setVisible(true);
    }
}
private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        ok = new javax.swing.JButton();
        annuler = new javax.swing.JButton();
        idPoint = new javax.swing.JTextField();
        abscisse = new javax.swing.JTextField();
        ordonnee = new javax.swing.JTextField();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setText("Point");
        jLabel2.setText("Nom Point");
        jLabel3.setText("Abscisse");
        jLabel4.setText("Ordonnée");
        ok.setText("OK");
        ok.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ok(evt);
            }
        });
        annuler.setText("Annuler");
        annuler.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                annuler(evt);
            }
        });
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(38, 38, 38)
                        .addComponent(ok)
                        .addGap(30, 30, 30)
                        .addComponent(annuler))
                    .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(19, 19, 19)
                                .addComponent(jLabel2))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING))))
                        .addGap(30, 30, 30) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(idPoint, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE)
                            .addComponent(abscisse)
                            .addComponent(ordonnee)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(65, 65, 65)
                        .addComponent(jLabel1)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(idPoint, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(abscisse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(ordonnee, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(35, 35, 35).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(ok)
                    .addComponent(annuler))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold> 
    private void ok(java.awt.event.ActionEvent evt) { 
        System.out.println("Clic sur OK");
        nom = idPoint.getText();
        String s1 = abscisse.getText();
        abs = Integer.parseInt(s1);
        String s2 = ordonnee.getText();
        ord = Integer.parseInt(s2);
        pane = new Panneau();
        pane.paintPoint( g, abs, ord);
        dispose(); 
        Point p = new Point();
        p.Point(nom, abs, ord);
        System.out.println(p);
//        this.M.ensemble.ajouteFigure(p);
//        System.out.println( this.M.ensemble.toString());
    }                   
    private void annuler(java.awt.event.ActionEvent evt) {                         
        System.out.println("Clic sur annuler");
        dispose();       
    }                     
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see [http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html] 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {java.util.logging.Logger.getLogger(Fenetre_Point.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {java.util.logging.Logger.getLogger(Fenetre_Point.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {java.util.logging.Logger.getLogger(Fenetre_Point.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {java.util.logging.Logger.getLogger(Fenetre_Point.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
        //</editor-fold>
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Fenetre_Point().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JTextField abscisse;
    private javax.swing.JButton annuler;
    private javax.swing.JTextField idPoint;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JButton ok;
    private javax.swing.JTextField ordonnee;
    // End of variables declaration  
}

package projet_interface_graphique;
import java.awt.Graphics;
import javax.swing.JPanel;
/**
 *
 * @author Gaëlle
 */
public class Panneau extends JPanel {
    JPanel panel;
    public Panneau(){
        panel = new JPanel();
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);       
    }
    public void paintPoint(Graphics g, int abs, int ord){
        super.paintComponent(g);
        g = getGraphics();
        Projet_interface_graphique.dessinPoint(g, abs, ord );
        repaint();   
    }
}

package projet_interface_graphique;
/**
 *
 * @author Gaëlle
 */
public class Point  {
    //Attributs de la classe 
    public double px;
    public double py;
    //Fin attributs
    //Début méthodes
    //afficher point  ( De la forme id=(px,py) )
    public String toString() {
        return "Point-" + super.idFigure + "-" + this.px + "-" + this.py;
    }
    //Fin (afficher point)
    //Création par défaut Point
    public void Point() {
        super.idFigure = "erreur";
        this.px = 0;
        this.py = 0;
    }
    //Fin (Création par défaut Point)
    // Création Point à partir de données déjà entrées
    public void Point(String idPoint, double px, double py) {
        super.idFigure = idPoint;
        this.px = px;
        this.py = py;
    }
    //Fin (Création Point à partir de données déjà entrées)
    //Création d'un point par l'utilisateur
    public Point creerPoint() {
        System.out.println("Pour créer un point, saisissez les informations suivantes : ");
        System.out.println("Identifiant : ");
        super.idFigure = Lire.S();
        System.out.println("Abscisse : ");
        this.px = Lire.d();
        System.out.println("Ordonnée : ");
        this.py = Lire.d();
        Point P = new Point();
        P.Point(super.idFigure, this.px, this.py);
        return P;
    }
    //Fin (Création d'un point par l'utilisateur)
    //abscisse max et min et ordonnée max et min
    public double MaxX() {
        return (this.px);
    }
    public double MinX() {
        return (this.px);
    }
    public double MaxY() {
        return (this.py);
    }
    public double MinY() {
        return (this.py);
    }
    //Fin (abscisse max et min et ordonnée max et min)
    //Distance entre un point et un autre point (ici entre deux points : le point de coordonnée px et py et le Point de reférence )
    public double DistancePoint(Point pointRef) {
        return (Math.sqrt(Math.pow((px - pointRef.px), 2) + Math.pow((py - pointRef.py), 2)));
    }
    //Fin (Distance Point/Point)
    public String Affiche() {
        String c;
        c = this.toString() + " Max X = " + MaxX() + " Min X = " + MinX() + " Max Y = " + MaxY() + " Min Y = " + MinY();
        return c;
    }
}

Pour les explications : ma classe Point est bonne, toutes ses méthodes fonctionnent donc pas de soucis de ce côté là. J'ai créé Fenetre_Point à partir des aides de netbeans ce qui explique les longues lignes de présentation de la fenêtre : c'est automatique.
Le but du projet est de créer une interface graphique : de créer des points et des segments à partir des données entrées par l'utilisateur. Tous les points et segments doivent apparaître dans le même panneau qui est sur la fenêtre principale (Fenetre).
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127 > Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018
29 déc. 2018 à 00:52
Ton "code complet" ne compile pas, notamment la classe Point qui définit une valeur super.idFigure alors que Point n'hérite d'aucune classe...

Je regarderais le code en détail, mais sans pouvoir le tester c'est plus compliqué !
0
Gaaile Messages postés 4 Date d'inscription mercredi 26 décembre 2018 Statut Membre Dernière intervention 29 décembre 2018
Modifié le 29 déc. 2018 à 20:19
Bonjour, j'ai refais mon programme autrement et maintenant j'arrive à dessiner un point et j'ai encore deux problèmes, la fenetre point s'affiche dans mon panneau quand je valide et les points s'effacent quand j'en remet un nouveau

Voici mon programme :

classe principale :
package nouveau;

/**
 *
* @author Gaëlle
*/
public class Nouveau {

    public static void main(String args[]) {
        Fenetre fen = new Fenetre();
        fen.setVisible(true);
    }

}

fenetre :
package nouveau;
import javax.swing.JFrame;

/**
 *
* @author Gaëlle
*/
public class Fenetre extends JFrame {

    //attributs de la classe 
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenu creation;
    private javax.swing.JMenuItem afficher;
    private javax.swing.JMenuItem point;
    public static Panneau pan = new Panneau();

    public Fenetre() {
        //Initialise les composants
        initComponents();
        //titre fenetre
        this.setTitle("Dessin");
        //taille fenetre
       this.setSize(1000, 1000);
        //ferme programme en fermant la fenetre
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //ajoute le panneau au Content Pane
        this.setContentPane(pan);
    }
    
    //initialisation des composants
    private void initComponents() {
        // Barre menu
        jMenuBar1 = new javax.swing.JMenuBar();
        //option dans barre menu
        creation = new javax.swing.JMenu();
        jMenuBar1.add(creation);
        creation.setText("Création");
        //option dans création (Point)
        point = new javax.swing.JMenuItem();
        point.setText("Point");
        creation.add(point);
        point.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pointActionPerformed(evt);
            }
        });
        setJMenuBar(jMenuBar1);
        pack();
    }

    //Clic sur point 
    private void pointActionPerformed(java.awt.event.ActionEvent evt) {
        System.out.println("Clic sur Créer un Point");
        FenetrePoint fenPoint = new FenetrePoint();
        fenPoint.setVisible(true);
    }
}

panneau :
package nouveau;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

/**
 *
* @author Gaëlle
*/
class Panneau extends JPanel {

    public int posX = -50;
    public int posY = -50;

    public void paintComponent(Graphics g) {
        g.setColor(Color.red);
        g.fillOval(posX, posY, 10, 10);
    }

    public int getPosX() {
        return posX;
    }

    public void setPosX(int posX) {
        this.posX = posX;
    }

    public int getPosY() {
        return posY;
    }

    public void setPosY(int posY) {
        this.posY = posY;
    }
}


Fenetre Point : (Je l'ai refaite en manuel avec ce que j'avais fais avec le logiciel précédement)

package nouveau;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

/**
 *
* @author Gaëlle
*/
class Panneau extends JPanel {

    public int posX = -50;
    public int posY = -50;

    public void paintComponent(Graphics g) {
        g.setColor(Color.red);
        g.fillOval(posX, posY, 10, 10);
    }

    public int getPosX() {
        return posX;
    }

    public void setPosX(int posX) {
        this.posX = posX;
    }

    public int getPosY() {
        return posY;
    }

    public void setPosY(int posY) {
        this.posY = posY;
    }
}

Merci pour tes réponses
0
Rejoignez-nous