Changer couleur de fond d'un cercle en un clic

[Résolu/Fermé]
Signaler
Messages postés
19
Date d'inscription
lundi 2 avril 2018
Statut
Membre
Dernière intervention
6 novembre 2020
-
Messages postés
19
Date d'inscription
lundi 2 avril 2018
Statut
Membre
Dernière intervention
6 novembre 2020
-
Bonjour tout le monde , en fait j'ai un petit blem sur une simple application que je veux creer
Le probleme en est , le fait de ne pas obtenir le changement de couleur de mon cercle en un clic :
voici la classe qui dessine le cercle puis fixe la couleur de fond :

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public abstract class Dessin extends JPanel {
 
 public void paintComponent(Graphics g){
  
 //rectangle acceuil
  
 g.drawRect(70,35,550,50);
 
 //Rectangle paint
 
 g.drawRect(220,320,200,200);
 g.setColor(Color.red);
 g.fillOval(250, 340, 155, 155);
 
 }
}


maintenant la classe ci-dessous est celle là où je veux faire changer la couleur du cercle en un clic de bouton :

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Test extends JFrame {
  
 
 public static void main(String[] args) {
  
          SwingUtilities.invokeLater(new Runnable() {
           
           
             public void run() {
               
               String contentA;
               String contentB;
               Dessin ds = new Dessin();
               
               Font f = new Font("elephant",Font.BOLD,20);
               Font gras = new Font("garamond",Font.BOLD,15);
               Font bk = new Font("rockwell",Font.BOLD,15);
              
               JFrame fenetre = new JFrame("Projet NIIT");
               JButton bouton1 = new JButton("Rectangle");
               JButton bouton2 = new JButton("Cercle");
               JButton bouton3 = new JButton("Polygone");
               JButton bouton4 = new JButton("Carre");               
               JLabel text = new JLabel("WELCOME TO PAINT APP");
               JLabel t1 = new JLabel("Choisir couleur de couverture");
               JLabel t2 = new JLabel("Choisir couleur de fond");
               
               String tab[] = {"rouge","bleu","orange","jaune","marron","grise","verte"}; 
               
               JComboBox box1 = new JComboBox(tab);
               JComboBox box2 = new JComboBox(tab);
                         
               //text.setColor(Color.red);
               text.setFont(f);
               t1.setFont(bk);
               t2.setFont(bk);
               bouton1.setFont(gras);
               bouton2.setFont(gras);
               bouton3.setFont(gras);
               bouton4.setFont(gras);
               
               //JComboBox box2 = new JComboBox(tab);
               
               JPanel jp = new JPanel();
               
               fenetre.add(box1);
               fenetre.add(box2);
               
               jp.add(bouton1);
               
               fenetre.add(text);
               fenetre.add(t1);
               fenetre.add(t2);
               
               bouton1.setSize(10,10);
               fenetre.add(bouton1);
               fenetre.add(bouton2);
               fenetre.add(bouton3);
               fenetre.add(bouton4);
               
               fenetre.add(jp);
               
               box1.setBounds(100,270,200,20);
               box2.setBounds(400,270,200,20);
               text.setBounds(190,50,350,20);
               t1.setBounds(100,220,240,20);
               t2.setBounds(400,220,200,20);
               
               bouton1.setBounds(80,150,120,20);
               bouton2.setBounds(220,150,100,20);
               bouton3.setBounds(340,150,100,20);
               bouton4.setBounds(460,150,100,20);
              
               
               fenetre.add(ds);
               // ds.setBounds(400,70,200,20);
              bouton1.addMouseListener(new MouseAdapter(){
          
         public void mouseClicked(MouseEvent arg0) {

    //  CEST LA OU CE TROUVE MON BLEM \\

          ds.g.setColor(Color.BLUE);

          }
          
          }
               
               );

               
               fenetre.setBackground(Color.LIGHT_GRAY);
               fenetre.setVisible(true);
               fenetre.setSize(690,600);
              
               }
              
               
          }
             
              
         );
     
        
 }

}

1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 860
Bonjour,

Pourquoi ta classe Dessin est abstract ?

De plus il n'y a aucun intérêt à ce qu'elle étende JPanel et que tu utilises la méthode paintComponent, tu peux utiliser (et quand on peut le faire, il faudrait le faire) une classe de plus haut niveau, comme Component et la méthode paint.

Quant à ton changement de couleur sur le Dessin tu peux le faire en ajoutant un attribut de couleur sur ton dessin, initialisé à Color.RED, qui pourrait prendre la valeur Color.BLUE à l'appel d'une méthode setColor qui déclencherait le repaint() du dessin.

public class Dessin extends Component {

    private Color color = Color.RED;

    @Override
    public void paint(Graphics g) {
        // rectangle acceuil
        g.drawRect(70, 35, 550, 50);

        // Rectangle paint
        g.drawRect(220, 320, 200, 200);
        g.setColor(color);
        g.fillOval(250, 340, 155, 155);
    }

    public void setColor(Color color) {
        this.color = color;
        repaint();
    }
}

bouton1.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent arg0) {
        // CEST LA OU CE TROUVE MON BLEM \\
        ds.setColor(Color.BLUE);
    }
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
19
Date d'inscription
lundi 2 avril 2018
Statut
Membre
Dernière intervention
6 novembre 2020

ahhh okk le mot abstract j’avais po rendu conte . Mais vraiment vous êtes super un grand Merci!!!!!!!!