Changer couleur de fond d'un cercle en un clic

Résolu/Fermé
lallana2re Messages postés 19 Date d'inscription lundi 2 avril 2018 Statut Membre Dernière intervention 6 novembre 2020 - Modifié le 2 avril 2018 à 11:09
lallana2re Messages postés 19 Date d'inscription lundi 2 avril 2018 Statut Membre Dernière intervention 6 novembre 2020 - 2 avril 2018 à 15:49
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);
              
               }
              
               
          }
             
              
         );
     
        
 }

}
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
2 avril 2018 à 11:28
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
lallana2re Messages postés 19 Date d'inscription lundi 2 avril 2018 Statut Membre Dernière intervention 6 novembre 2020
2 avril 2018 à 15:49
ahhh okk le mot abstract j’avais po rendu conte . Mais vraiment vous êtes super un grand Merci!!!!!!!!
0