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

avec Java Discussion :

Action Listener qui ne fonctionne pas


Sujet :

avec Java

  1. #21
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Sa s'affiche c'est génial je te remerci enormément. Tu me sauve.
    Mais je n'est pa fini il faut ke je puisse bouger ces forme une fois quel sont sur le panel du centre.
    De façon à pouvoir faire des dessins.

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pinps Voir le message
    Sa s'affiche c'est génial je te remerci enormément. Tu me sauve.
    Mais je n'est pa fini il faut ke je puisse bouger ces forme une fois quel sont sur le panel du centre.
    De façon à pouvoir faire des dessins.
    Bah, je te laisse chercher un peu pour ça

    Mais si j'avais su ça avant, je t'aurais aiguillé sur les java.awt.Shape...

  3. #23
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ok je vais chercher ce soir si j'ai un peu de temp.
    Ce qui m'enbete, c'est que il doit etre fait absolument pour vendredi, j'espère que j'aurai fini...

  4. #24
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    J'ai fait plus simple finalement.
    Au lieu de chercher à déplacer les formes, je les fait apparaitre ou je veut en récupérant les coordonnées du curseur avec getx() et gety().
    Il faut maintenant que je donne une couleur au formes.
    Je suppose qu'il faut que je mi prenne comme pour les formes et que je remplace le switch par des if?

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu as une liste de couleurs finies pas trop grandes, un switch marche aussi.

    Mais tu peux faire beaucoup plus simple : pour les couleurs tu na pas besoin de crées des formes différentes en fonction du bouton sur lequel tu cliques, chaque bouton décide de la couleur que tu veux associer.

    Éventuellement tu peux utiliser un tableau pour te soulager de taper trop de code.

    Donc je récapitule :

    on va stocker la couleur à affecter à chaque nouvelle forme dans une variable de la classe FenPrincipal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Color couleurCourante;
    tu as un bouton pour choisir une couleur, que tu as créé comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buttonTruc = new JButton(...);
    Si tu fais une classe interne comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public ColorActionListener implements ActionListener {
         private Color color;
         public ColorActionListener(Color color) {
    this.color=color;
    }
         public void actionPerformed(ActionEvent event) {
                 couleurCourante=color;
         }
    }
    et ensuite tu n'as qu'à faire sur ton bouton :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JButton buttonRouge = new JButton("Rouge");
    buttonRouge.addActionListener(new ColorActionListener(Color.RED));
    JButton buttonVert = new JButton("Vert");
    buttonVert.addActionListener(new ColorActionListener(Color.GREEN));
    ... etc...
    mais si tu en plus tu fais un tableau dans ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private final static Color[] MES_COULEURS = {Color.RED,Color.GREEN, Color.YELLOW};
    tu peux faire une boucle dessus pour créer tous tes boutons (au lieu de mettre le nom de la couleur en français tu mets une image dans la couleur qui correspond au bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(Color color : MES_COULEURS) {
     
    BufferedImage image = new BufferedImage(24, 24, BufferedImage.TYPE_INT_RGB);
    		Graphics2D g = image.createGraphics();
    		g.setColor(color);
    		g.fillRect(0, 0, image.getWidth(), image.getHeight());
    		g.dispose();
     
    		JButton button.setIcon(new ImageIcon(image));
    button.addActionListener(new ColorActionListener(color));
    }

  6. #26
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    J'ai les couleurs jaune, bleu, rouge, vert, noir.
    Je sélectionne une forme et une couleur puis je fait apparaitre sur le panel du centre.
    Par exemple carré rouge ou carré jaune ou triangle jaune ou triangle vert ou cercle bleu ect...
    Si j'ai bien compris ta première solution doit fonctionner.
    J'essaye sa, merci.

  7. #27
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Lorsque je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    btn_bleu.addActionListener(new ColorActionListener(Color.BLUE));
    netbeans me dit que ColorActionListener est abstraite et ne peut pas être instancié.
    Mais si je ne la définie pas comme abstraite j'ai le message "FenPrincipal.ColorActionListener is not abstract and does not override abstract method ActionPerformed(ActionEvent) in ActionListener"
    Voila mon code :
    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
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package tp.dessinons;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
     
    /**
     *
     * @author pinps
     */
    public class FenPrincipal extends JFrame {
     
        private JButton btn_triangle;
        private JButton btn_carre;
        private JButton btn_cercle;
        private JButton btn_raz;
        private JLabel lbl_forme;
        private JLabel lbl_couleur;
        private JButton btn_bleu;
        private JButton btn_jaune;
        private JButton btn_rouge;
        private JButton btn_vert;
        private JButton btn_noir;
        private Dessin zone_centre;
        private Color couleurCourante;
     
        public static void main(String[] args) {
            //Description de la fenetre principal
            FenPrincipal fen=new FenPrincipal();
            fen.setTitle("Dessinons");
            fen.setSize(520,300);
            fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fen.setVisible(true);
     
        }
        public enum FORME{
            RECTANGLE, CERCLE, TRIANGLE, RAZ;
        }
        public class Dessin extends JPanel implements MouseListener{
            ArrayList<Forme> liste;
            public Dessin(){
                liste=new ArrayList<>();
            }
            public void viderliste(){
                liste.clear();
                repaint();
            }
            private FORME formeCourante;
            public void setFormeCourante(FORME formeCourante){
                this.formeCourante=formeCourante;
            }
     
            @Override
            public void mouseClicked(MouseEvent e){
                int x=e.getX();
                int y=e.getY();
                Forme forme;
                switch(formeCourante){
                    case RECTANGLE :
                        forme=new FormeRectangle(x,y,20,20);
                       break;
                    case CERCLE :
                        forme=new FormeEllipse(x,y,20,20);
                       break;
                    case TRIANGLE :
                        forme=new FormeTriangle(x,y,20,20);
                       break;
                    case RAZ :
                        forme=null;
                        liste.clear();
                    default :
                        return;
                }
                liste.add(forme);
                repaint();
            };
            @Override
            public void mouseEntered(MouseEvent e){};
            @Override
            public void mouseExited(MouseEvent e){};
            @Override
            public void mousePressed(MouseEvent e){};
            @Override
            public void mouseReleased(MouseEvent e){};
     
            public abstract class Forme{
     
                protected int x;
                protected int y;
                protected int width;
                protected int height;
     
                public Forme(int x, int y, int width, int height){
                    this.x=x;
                    this.y=y;
                    this.width=width;
                    this.height=height;
                }
     
                public abstract void draw(Graphics2D g);
     
                public abstract void fill(Graphics2D g);
     
            }
                 public class FormeRectangle extends Forme {
                    public FormeRectangle (int x, int y, int width, int height){
                        super(x, y, width, height);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawRect(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillRect(x, y, width, height);
                    }
                }
     
                public class FormeEllipse extends Forme{
                    public FormeEllipse(int x, int y, int width, int height){
                        super(x, y, width, height);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawOval(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillOval(x, y, width, height);
                    }
                }
     
                public class FormeTriangle extends Forme{
                    private int[] xtriangle;
                    private int[] ytriangle;
                    public FormeTriangle(int x, int y, int width, int height){
                        super(x, y, width, height);
                        xtriangle=new int[]{x, x+width/2, x+width};
                        ytriangle=new int[]{y+height, y, y+height};
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawPolygon(xtriangle, ytriangle, 3);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillPolygon(xtriangle, ytriangle, 3);
                    }
     
                }       
            @Override
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                Graphics2D g2d=(Graphics2D)g;
                for(Forme forme : liste){
                    forme.draw(g2d);
                }
            }
        }
            public abstract class ColorActionListener implements ActionListener{
                private Color color;
                public ColorActionListener(Color color){
                this.color=color;
                }
                public void acionPerformed(ActionEvent event){
                    couleurCourante=color;
                }
            }    
        public FenPrincipal(){
            //String forme="";
            BoutonForme boutonforme=new BoutonForme();
            //Création de la zonne du haut
            JPanel zone_haut=new JPanel();
            //Création de boutons et libéllés
            btn_triangle=new JButton("Triangle");
            btn_carre=new JButton("Carré");
            btn_cercle=new JButton("Cercle");
            btn_raz=new JButton("RAZ");
            JLabel lbl_formetxt=new JLabel("Forme : ");
            lbl_forme=new JLabel();
            JLabel lbl_couleurtxt=new JLabel("Couleur : ");
            lbl_couleur=new JLabel();
            //Ajout des boutons et libellés à la zonne du haut
            zone_haut.add(btn_triangle);
            zone_haut.add(btn_carre);
            zone_haut.add(btn_cercle);
            zone_haut.add(btn_raz);
            zone_haut.add(lbl_formetxt);
            zone_haut.add(lbl_forme);
            zone_haut.add(lbl_couleurtxt);
            zone_haut.add(lbl_couleur);
            //Enregistrement du recepteur d'action
            btn_triangle.addActionListener(boutonforme);
            btn_carre.addActionListener(boutonforme);
            btn_cercle.addActionListener(boutonforme);
            btn_raz.addActionListener(boutonforme);
            //Placement de la zone du haut
            getContentPane().add(BorderLayout.NORTH, zone_haut);
     
            //Création de la zone du bas
            JPanel zone_bas=new JPanel();
            //Création des boutons de la zone du bas
            btn_bleu=new JButton("Bleu");
            btn_bleu.setBackground(Color.blue);
            btn_bleu.addActionListener(new ColorActionListener(Color.BLUE));
            btn_jaune=new JButton("Jaune");
            btn_jaune.setBackground(Color.yellow);
            btn_rouge=new JButton("Rouge");
            btn_rouge.setBackground(Color.red);
            btn_vert=new JButton("Vert");
            btn_vert.setBackground(Color.green);
            btn_noir=new JButton("Noir");
            btn_noir.setBackground(Color.black);
            //Ajout des boutons à la zone du bas
            zone_bas.add(btn_bleu);
            zone_bas.add(btn_jaune);
            zone_bas.add(btn_rouge);
            zone_bas.add(btn_vert);
            zone_bas.add(btn_noir);
            //Enregistrement des recepteurs d'action
            btn_bleu.addActionListener(boutonforme);
            btn_jaune.addActionListener(boutonforme);
            btn_rouge.addActionListener(boutonforme);
            btn_vert.addActionListener(boutonforme);
            btn_noir.addActionListener(boutonforme);
            //Placement de la zone du bas
            getContentPane().add(BorderLayout.SOUTH, zone_bas);
     
            //Création de la zone du centre
            zone_centre=new Dessin();
            zone_centre.addMouseListener(zone_centre);
            zone_centre.setBackground(Color.white);
            //Placement de la zone du centre
            getContentPane().add(BorderLayout.CENTER, zone_centre);
     
     
        }
     
        public class BoutonForme extends JButton implements ActionListener{
     
            @Override
            public void actionPerformed(ActionEvent e) {
                //Action à effectuer sur click du bouton
                if (e.getSource()== btn_triangle){
                    lbl_forme.setText("Triangle");
                    zone_centre.setFormeCourante(FORME.TRIANGLE);
                }else if (e.getSource()== btn_carre){
                    lbl_forme.setText("Carre");
                    zone_centre.setFormeCourante(FORME.RECTANGLE);
                }else if (e.getSource()== btn_cercle){
                    lbl_forme.setText("Cercle");
                    zone_centre.setFormeCourante(FORME.CERCLE);
                }else if (e.getSource()== btn_raz){
                    lbl_forme.setText("RAZ");
                    lbl_couleur.setText("RAZ");
                }
     
                if (e.getSource()== btn_bleu){
                    lbl_couleur.setText("Bleu");
                }else if (e.getSource()== btn_jaune){
                    lbl_couleur.setText("Jaune");
                }else if (e.getSource()== btn_rouge){
                    lbl_couleur.setText("Rouge");
                }else if (e.getSource()== btn_vert){
                    lbl_couleur.setText("Vert");
                }else if (e.getSource()== btn_noir){
                    lbl_couleur.setText("Noir");
                }
            }
     
        }
        }
    Comment doit-je définir ma classe?
    De plus la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Color couleurCourante;
    n'est jamais utiliser.

  8. #28
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est parce que tu as mis ta classe ColorActionListener (je ne sais pas pourquoi)à : c'est exactement le même problème que tout à l'heure en plus !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract class ColorActionListener
    Si couleurCourante n'est pas utilisée c'est que ... tu ne l'utilises pas...

    j'avais dans l'idée quand je t'ai mis l'exemple de solution que tu pensais avoir une couleur courante, que toutes les nouvelles formes crées utiliseraient, jusqu'à ce qu'on change cette couleur courante... en ajoutant une notion de couleur aux formes, donc en ajoutant une variable de type Color dans la classe Forme, en ajoutant des accesseurs (setColor(Color) et Color getColor())) et donc juste avant de dessiner la forme (le forme.draw(...) ou le forme.fill()) on affectait la couleur au contexte graphique .

  9. #29
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ah d'accord, je vais me contenter d'avoir une couleur quand j'en aurais sélectionner une étant donné que je suis un peu pressé.
    Je suis d'accord que l'erreur est la même mais cela ne fonctionne pas non plus si la classe n'est pas abstraite, comme j'ai dit dans mon message précédent.
    Je ne comprend.
    Je vais me coucher cela ira peut-être mieux demain.
    En tout cas merci pour ton aide et ta patience.

  10. #30
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    La réponse est dans le message d'erreur :

    "FenPrincipal.ColorActionListener is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener"
    On te dit que la classe ColorActionListener doit définir la méthode ActionPerformed(ActionEvent) de ActionListener, or tu as écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void acionPerformed(ActionEvent event){
       couleurCourante=color;
    }
    (manque le t)

  11. #31
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    oulala l'étourderi. Je suis iratrappable.
    J'ai essayer de faire en sorte que quand je clic sur un bouton, une couleur est affecter à la forme.
    J'ai essayer de suivre tes conseil mais je ne vois pas ou et comment affecter ma couleur à ma forme....

    Voila mon code :
    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
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package tp.dessinons;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
     
    /**
     *
     * @author pinps
     */
    public class FenPrincipal extends JFrame {
     
        private JButton btn_triangle;
        private JButton btn_carre;
        private JButton btn_cercle;
        private JButton btn_raz;
        private JLabel lbl_forme;
        private JLabel lbl_couleur;
        private JButton btn_bleu;
        private JButton btn_jaune;
        private JButton btn_rouge;
        private JButton btn_vert;
        private JButton btn_noir;
        private Dessin zone_centre;
        private Color couleurCourante;
     
        public static void main(String[] args) {
            //Description de la fenetre principal
            FenPrincipal fen=new FenPrincipal();
            fen.setTitle("Dessinons");
            fen.setSize(520,300);
            fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fen.setVisible(true);
     
        }
        public enum FORME{
            RECTANGLE, CERCLE, TRIANGLE, RAZ;
        }
        public class Dessin extends JPanel implements MouseListener{
            //Création de la liste
            ArrayList<Forme> liste;
            public Dessin(){
                liste=new ArrayList<>();
            }
     
            private FORME formeCourante;
            public void setFormeCourante(FORME formeCourante){
                this.formeCourante=formeCourante;
            }
     
            //Ajout de la forme à la liste
            @Override
            public void mouseClicked(MouseEvent e){
                int x=e.getX();
                int y=e.getY();
                Forme forme;
                switch(formeCourante){
                    case RECTANGLE :
                        forme=new FormeRectangle(x,y,20,20);
                       break;
                    case CERCLE :
                        forme=new FormeEllipse(x,y,20,20);
                       break;
                    case TRIANGLE :
                        forme=new FormeTriangle(x,y,20,20);
                       break;
                    case RAZ :
                        forme=null;
                        liste.clear();
                    default :
                        return;
                }
                liste.add(forme);
                repaint();
            };
            @Override
            public void mouseEntered(MouseEvent e){};
            @Override
            public void mouseExited(MouseEvent e){};
            @Override
            public void mousePressed(MouseEvent e){};
            @Override
            public void mouseReleased(MouseEvent e){};
     
            public abstract class Forme{
     
                protected int x;
                protected int y;
                protected int width;
                protected int height;
                protected Color color;
     
                public Forme(int x, int y, int width, int height){
                    this.x=x;
                    this.y=y;
                    this.width=width;
                    this.height=height;
                    this.color=color;
                }
     
                public abstract void draw(Graphics2D g);
     
                public abstract void fill(Graphics2D g);
     
            }
     
            //Classe de forme
                 public class FormeRectangle extends Forme {
                    public FormeRectangle (int x, int y, int width, int height){
                        super(x, y, width, height);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawRect(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillRect(x, y, width, height);
                    }
                }
     
                public class FormeEllipse extends Forme{
                    public FormeEllipse(int x, int y, int width, int height){
                        super(x, y, width, height);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawOval(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillOval(x, y, width, height);
                    }
                }
     
                public class FormeTriangle extends Forme{
                    private int[] xtriangle;
                    private int[] ytriangle;
                    public FormeTriangle(int x, int y, int width, int height){
                        super(x, y, width, height);
                        xtriangle=new int[]{x, x+width/2, x+width};
                        ytriangle=new int[]{y+height, y, y+height};
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.drawPolygon(xtriangle, ytriangle, 3);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.fillPolygon(xtriangle, ytriangle, 3);
                    }
     
                }       
            @Override
            //Affichage de la liste dans paintComponent
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                Graphics2D g2d=(Graphics2D)g;
                for(Forme forme : liste){
                    forme.draw(g2d);
                }
            }
        }
     
            public class ColorActionListener implements ActionListener{
                private Color color;
                public ColorActionListener(Color color){
                this.color=color;
                }
                @Override
                public void actionPerformed(ActionEvent event){
                    couleurCourante=color;
                }
            }
        public FenPrincipal(){
            //String forme="";
            BoutonForme boutonforme=new BoutonForme();
            //Création de la zonne du haut
            JPanel zone_haut=new JPanel();
            //Création de boutons et libéllés
            btn_triangle=new JButton("Triangle");
            btn_carre=new JButton("Carré");
            btn_cercle=new JButton("Cercle");
            btn_raz=new JButton("RAZ");
            JLabel lbl_formetxt=new JLabel("Forme : ");
            lbl_forme=new JLabel();
            JLabel lbl_couleurtxt=new JLabel("Couleur : ");
            lbl_couleur=new JLabel();
            //Ajout des boutons et libellés à la zonne du haut
            zone_haut.add(btn_triangle);
            zone_haut.add(btn_carre);
            zone_haut.add(btn_cercle);
            zone_haut.add(btn_raz);
            zone_haut.add(lbl_formetxt);
            zone_haut.add(lbl_forme);
            zone_haut.add(lbl_couleurtxt);
            zone_haut.add(lbl_couleur);
            //Enregistrement du recepteur d'action
            btn_triangle.addActionListener(boutonforme);
            btn_carre.addActionListener(boutonforme);
            btn_cercle.addActionListener(boutonforme);
            btn_raz.addActionListener(boutonforme);
            //Placement de la zone du haut
            getContentPane().add(BorderLayout.NORTH, zone_haut);
     
            //Création de la zone du bas
            JPanel zone_bas=new JPanel();
            //Création des boutons de la zone du bas
            btn_bleu=new JButton("Bleu");
            btn_bleu.setBackground(Color.blue);
            btn_bleu.addActionListener(new ColorActionListener(Color.BLUE));
            btn_jaune=new JButton("Jaune");
            btn_jaune.setBackground(Color.yellow);
            btn_jaune.addActionListener(new ColorActionListener(Color.YELLOW));
            btn_rouge=new JButton("Rouge");
            btn_rouge.setBackground(Color.red);
            btn_rouge.addActionListener(new ColorActionListener(Color.RED));
            btn_vert=new JButton("Vert");
            btn_vert.setBackground(Color.green);
            btn_vert.addActionListener(new ColorActionListener(Color.GREEN));
            btn_noir=new JButton("Noir");
            btn_noir.setBackground(Color.black);
            btn_noir.addActionListener(new ColorActionListener(Color.BLACK));
            //Ajout des boutons à la zone du bas
            zone_bas.add(btn_bleu);
            zone_bas.add(btn_jaune);
            zone_bas.add(btn_rouge);
            zone_bas.add(btn_vert);
            zone_bas.add(btn_noir);
            //Enregistrement des recepteurs d'action
            btn_bleu.addActionListener(boutonforme);
            btn_jaune.addActionListener(boutonforme);
            btn_rouge.addActionListener(boutonforme);
            btn_vert.addActionListener(boutonforme);
            btn_noir.addActionListener(boutonforme);
            //Placement de la zone du bas
            getContentPane().add(BorderLayout.SOUTH, zone_bas);
     
            //Création de la zone du centre
            zone_centre=new Dessin();
            zone_centre.addMouseListener(zone_centre);
            zone_centre.setBackground(Color.white);
            //Placement de la zone du centre
            getContentPane().add(BorderLayout.CENTER, zone_centre);
     
     
        }
     
        public class BoutonForme extends JButton implements ActionListener{
     
            @Override
            public void actionPerformed(ActionEvent e) {
                //Affichage dans les labels sur click du bouton
                if (e.getSource()== btn_triangle){
                    lbl_forme.setText("Triangle");
                    zone_centre.setFormeCourante(FORME.TRIANGLE);
                }else if (e.getSource()== btn_carre){
                    lbl_forme.setText("Carre");
                    zone_centre.setFormeCourante(FORME.RECTANGLE);
                }else if (e.getSource()== btn_cercle){
                    lbl_forme.setText("Cercle");
                    zone_centre.setFormeCourante(FORME.CERCLE);
                }else if (e.getSource()== btn_raz){
                    lbl_forme.setText("RAZ");
                    lbl_couleur.setText("RAZ");
                }
     
                if (e.getSource()== btn_bleu){
                    lbl_couleur.setText("Bleu");
                }else if (e.getSource()== btn_jaune){
                    lbl_couleur.setText("Jaune");
                }else if (e.getSource()== btn_rouge){
                    lbl_couleur.setText("Rouge");
                }else if (e.getSource()== btn_vert){
                    lbl_couleur.setText("Vert");
                }else if (e.getSource()== btn_noir){
                    lbl_couleur.setText("Noir");
                }
            }
     
        }
        }

  12. #32
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Maintenant que tes boutons de couleur mettent la couleur qui leur correspond dans la variable couleurCourante,

    modifie ta classe Forme pour quelle puisse "être colorée" :

    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
     public abstract class Forme{
     
                protected int x;
                protected int y;
                protected int width;
                protected int height;
                protected Color color;
     
                public Forme(int x, int y, int width, int height){
                    this.x=x;
                    this.y=y;
                    this.width=width;
                    this.height=height;
                    this.color=couleurCourante;
                }
     
                public abstract void draw(Graphics2D g);
     
                public abstract void fill(Graphics2D g);
     
            }
    Bon, c'est une façon un peu lazy de faire, mais ça ira dans ton cas (ajouter éventuellement une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setCouleur(Color color) {
    this.color=color;
    }
    pour changer la couleur d'une forme.

    Attention, toutefois, il n'y a pas de valeur par défaut dans couleurCourante : veille à en mettre une, par exemple lors de sa déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Color couleurCourante=Color.BLACK;
    Ensuite, il faut prendre en compte cette couleur lors du dessin :

    - soit tu le fais à l'extérieur de la classe Forme :

    Ajoutes la méthode suivante à ta classe Forme pour connaitre la couleur de la forme, depuis l'exterieur de la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Color getCouleur() {
    return this.color;
    }
    et modifie ta méthode de dessin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Override
            //Affichage de la liste dans paintComponent
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                Graphics2D g2d=(Graphics2D)g;
                for(Forme forme : liste){
                    g2d.setColor(forme.getCouleur());
                    forme.draw(g2d);
                }
            }
    Si tu veux dessiner une forme pleine dans la couleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Override
            //Affichage de la liste dans paintComponent
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                Graphics2D g2d=(Graphics2D)g;
                for(Forme forme : liste){
                    g2d.setColor(forme.getCouleur()); // on chosite la couleur de fond de la forme
                    forme.fill(g2d); // on remplie la forme avec la couleur choisie
                    g2d.setColor(Color.BLACK); // on choisit du noir pour la bordure
                    forme.draw(g2d); // on dessine la bordure de la forme
                }
            }

  13. #33
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    C'est bon j'ai réussi à faire touts ce que je voulais.
    La seul chose qui ne fonctionne pas c'est le bouton RAZ pour effacer le panel.
    J'ai fait une classe Raz() qui contient liste.clear() et que j'appel lorsque je clique sur le bouton RAZ.
    Mais cela n'efface pas les figures.
    Voila mon code.

    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
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    package tp.dessinons;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    
    /**
     *
     * @author pinps
     */
    public class FenPrincipal extends JFrame {
    
        private JButton btn_triangle;
        private JButton btn_carre;
        private JButton btn_cercle;
        private JButton btn_raz;
        private JLabel lbl_forme;
        private JLabel lbl_couleur;
        private JButton btn_bleu;
        private JButton btn_jaune;
        private JButton btn_rouge;
        private JButton btn_vert;
        private JButton btn_noir;
        private Dessin zone_centre;
        
        public static void main(String[] args) {
            //Description de la fenetre principal
            FenPrincipal fen=new FenPrincipal();
            fen.setTitle("Dessinons");
            fen.setSize(520,300);
            fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fen.setVisible(true);
            
        }
        public enum FORME{
            RECTANGLE, CERCLE, TRIANGLE, RAZ;
        }
        public class Dessin extends JPanel implements MouseListener{
            //Création de la liste
            ArrayList<Forme> liste;
            public Dessin(){
                liste=new ArrayList<>();
            }
    
            private FORME formeCourante;
            public void setFormeCourante(FORME formeCourante){
                this.formeCourante=formeCourante;
            }
    
            private Color couleurCourante;
             public void setCouleurCourante(Color couleurCourante){
                this.couleurCourante=couleurCourante;
            }
            //Ajout de la forme à la liste
            @Override
            public void mouseClicked(MouseEvent e){
                int x=e.getX();
                int y=e.getY();
                Forme forme;
                switch(formeCourante){
                    case RECTANGLE :
                        forme=new FormeRectangle(x,y,20,20,this.couleurCourante);
                       break;
                    case CERCLE :
                        forme=new FormeEllipse(x,y,20,20,this.couleurCourante);
                       break;
                    case TRIANGLE :
                        forme=new FormeTriangle(x,y,20,20,this.couleurCourante);
                       break;
                    case RAZ :
                        forme=null;
                        zone_centre.Raz();
                    default :
                        return;
                }
                
                liste.add(forme);
                repaint();
            };
            @Override
            public void mouseEntered(MouseEvent e){};
            @Override
            public void mouseExited(MouseEvent e){};
            @Override
            public void mousePressed(MouseEvent e){};
            @Override
            public void mouseReleased(MouseEvent e){};
            
            private void Raz() {
                liste.clear();
            }
            
            public abstract class Forme{
                
                protected int x;
                protected int y;
                protected int width;
                protected int height;
                protected Color color;
                
                public Forme(int x, int y, int width, int height,Color color){
                    this.x=x;
                    this.y=y;
                    this.width=width;
                    this.height=height;
                    this.color=color;
                }
                
                public abstract void draw(Graphics2D g);
                
                public abstract void fill(Graphics2D g);
                
            }
            
            //Classe de forme
                 public class FormeRectangle extends Forme {
                    public FormeRectangle (int x, int y, int width, int height, Color color){
                        super(x, y, width, height, color);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.setColor(color);
                        g.drawRect(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.setColor(color);
                        g.setBackground(color);
                        g.fillRect(x, y, width, height);
                    }
                }
                
                public class FormeEllipse extends Forme{
                    public FormeEllipse(int x, int y, int width, int height, Color color){
                        super(x, y, width, height, color);
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.setColor(color);
                        g.drawOval(x, y, width, height);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.setColor(color);
                        g.setBackground(color);
                        g.fillOval(x, y, width, height);
                    }
                }
                
                public class FormeTriangle extends Forme{
                    private int[] xtriangle;
                    private int[] ytriangle;
                    public FormeTriangle(int x, int y, int width, int height, Color color){
                        super(x, y, width, height, color);
                        xtriangle=new int[]{x, x+width/2, x+width};
                        ytriangle=new int[]{y+height, y, y+height};
                    }
                    @Override
                    public void draw(Graphics2D g){
                        g.setColor(color);
                        g.drawPolygon(xtriangle, ytriangle, 3);
                    }
                    @Override
                    public void fill(Graphics2D g){
                        g.setColor(color);
                        g.setBackground(color);
                        g.fillPolygon(xtriangle, ytriangle, 3);
                    }
                    
                }       
            @Override
            //Affichage de la liste dans paintComponent
            public void paintComponent(Graphics g){
                super.paintComponent(g);
                Graphics2D g2d=(Graphics2D)g;
                for(Forme forme : liste){
                    forme.draw(g2d);
                    forme.fill(g2d);
                }
            }
        }
     
        public FenPrincipal(){
    
            BoutonForme boutonforme=new BoutonForme();
            //Création de la zonne du haut
            JPanel zone_haut=new JPanel();
            //Création de boutons et libéllés
            btn_triangle=new JButton("Triangle");
            btn_carre=new JButton("Carré");
            btn_cercle=new JButton("Cercle");
            btn_raz=new JButton("RAZ");
            JLabel lbl_formetxt=new JLabel("Forme : ");
            lbl_forme=new JLabel();
            JLabel lbl_couleurtxt=new JLabel("Couleur : ");
            lbl_couleur=new JLabel();
            //Ajout des boutons et libellés à la zonne du haut
            zone_haut.add(btn_triangle);
            zone_haut.add(btn_carre);
            zone_haut.add(btn_cercle);
            zone_haut.add(btn_raz);
            zone_haut.add(lbl_formetxt);
            zone_haut.add(lbl_forme);
            zone_haut.add(lbl_couleurtxt);
            zone_haut.add(lbl_couleur);
            //Enregistrement du recepteur d'action
            btn_triangle.addActionListener(boutonforme);
            btn_carre.addActionListener(boutonforme);
            btn_cercle.addActionListener(boutonforme);
            btn_raz.addActionListener(boutonforme);
            //Placement de la zone du haut
            getContentPane().add(BorderLayout.NORTH, zone_haut);
            
            //Création de la zone du bas
            JPanel zone_bas=new JPanel();
            //Création des boutons de la zone du bas
            btn_bleu=new JButton("Bleu");
            btn_bleu.setBackground(Color.blue);
            btn_jaune=new JButton("Jaune");
            btn_jaune.setBackground(Color.yellow);
            btn_rouge=new JButton("Rouge");
            btn_rouge.setBackground(Color.red);
            btn_vert=new JButton("Vert");
            btn_vert.setBackground(Color.green);
            btn_noir=new JButton("Noir");
            btn_noir.setBackground(Color.black);
            //Ajout des boutons à la zone du bas
            zone_bas.add(btn_bleu);
            zone_bas.add(btn_jaune);
            zone_bas.add(btn_rouge);
            zone_bas.add(btn_vert);
            zone_bas.add(btn_noir);
            //Enregistrement des recepteurs d'action
            btn_bleu.addActionListener(boutonforme);
            btn_jaune.addActionListener(boutonforme);
            btn_rouge.addActionListener(boutonforme);
            btn_vert.addActionListener(boutonforme);
            btn_noir.addActionListener(boutonforme);
            //Placement de la zone du bas
            getContentPane().add(BorderLayout.SOUTH, zone_bas);
            
            //Création de la zone du centre
            zone_centre=new Dessin();
            zone_centre.addMouseListener(zone_centre);
            zone_centre.setBackground(Color.white);
            //Placement de la zone du centre
            getContentPane().add(BorderLayout.CENTER, zone_centre);
            
            
        }
        
        public class BoutonForme extends JButton implements ActionListener{
            
            @Override
            public void actionPerformed(ActionEvent e) {
                //Affichage dans les labels sur click du bouton
                if (e.getSource()== btn_triangle){
                    lbl_forme.setText("Triangle");
                    zone_centre.setFormeCourante(FORME.TRIANGLE);
                }else if (e.getSource()== btn_carre){
                    lbl_forme.setText("Carre");
                    zone_centre.setFormeCourante(FORME.RECTANGLE);
                }else if (e.getSource()== btn_cercle){
                    lbl_forme.setText("Cercle");
                    zone_centre.setFormeCourante(FORME.CERCLE);
                }else if (e.getSource()== btn_raz){
                    lbl_forme.setText("RAZ");
                    lbl_couleur.setText("RAZ");
                }
                
                if (e.getSource()== btn_bleu){
                    lbl_couleur.setText("Bleu");
                    zone_centre.setCouleurCourante(Color.blue);
                }else if (e.getSource()== btn_jaune){
                    lbl_couleur.setText("Jaune");
                    zone_centre.setCouleurCourante(Color.yellow);
                }else if (e.getSource()== btn_rouge){
                    lbl_couleur.setText("Rouge");
                    zone_centre.setCouleurCourante(Color.red);
                }else if (e.getSource()== btn_vert){
                    lbl_couleur.setText("Vert");
                    zone_centre.setCouleurCourante(Color.green);
                }else if (e.getSource()== btn_noir){
                    lbl_couleur.setText("Noir");
                    zone_centre.setCouleurCourante(Color.black);
                }
            }
            
        }
        }

  14. #34
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    rappelles-toi ce que j'ai dit dans le post 20 : toujours prévenir la vue qu'elle doit se redessiner quand on change l'état qui est dessiné.

    Parce que le panel Dessin ne peut pas deviner que tu as vidé la liste de formes...

    Donc, dans ta méthode raz() de Dessin, ajoutes un repaint() juste après le liste.clear().

  15. #35
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    J'ai exactement le même résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void Raz() {
                liste.clear();
                repaint();
            }
    le problème est peut-être que j'appel la classe Raz?

  16. #36
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Points : 13
    Points
    13
    Par défaut [RESOLU]
    C'est bon j'ai mis le zone_centre.Raz() dans le action performed à la fin de mon code.
    Je te remercie encor pour ton aide et ta patience.
    Je n'y serai jamais arrivé sans toi.

  17. #37
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Cool

    J'adore quand les participants finissent par régler leur problème tout seul

    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2010, 09h49
  2. Mon bouton "Action" qui ne fonctionne pas
    Par Yachas dans le forum wxPython
    Réponses: 2
    Dernier message: 29/01/2010, 11h52
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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