Bonjour,

J'essaye de changer la couleur de fond de mes Panel, j'ai trois slider : R,G,B et des buttonRadio qui correspond chacun à un panel.

Exemple:

le 1er buttonRadio correspond au panel1

le 2eme buttonRadio correspond au panel2

...

Lorsque je sélectionne le 1er buttonRadio, à l'aide des sliders R,G,B la couleur de fond du panel1 change.

Lorsque je sélectionne le 2eme buttonRadio, à l'aide des sliders R,G,B la couleur de fond du panel2 change.

...

Mon code fonctionne lorsque je sélectionne le 1er buttonRadio la couleur de fond de panel1 change sauf que lorsque je sélectionne le 2eme buttonRadio la couleur de fond de panel2 change mais il change également la couleur de fond de panel1.

Voici 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
 
public MaFenetre extends JFrame implements ActionListener{
 
        PanneauExt panel1, panel2;
        JPanel panel, panelbouton, panelSlide;
        JSlider slideR, slideG, slideB;
        JRadioButton b1, b2;
 
public MaFenetre (){
 
        panel1 = new PanneauExt (); 
        panel2 = new PanneauExt ();
 
        // Panel contenant JRadioButton et slider
        panelBouton = new JPanel();
        ButtonGroup bg = new ButtonGroup();
        b1 = new JRadioButton("Action sur panel1");
        b1.addActionListener(this);
        b2 = new JRadioButton("Action sur panel2");
        b2.addActionListener(this);
        bg.add(b1);
        bg.add(b2);
        panelBouton.add(b1);
        panelBouton.add(b2);
 
        panelSlide=new JPanel(new GridLayout(3,1));
        slideR = new JSlider(); 
        slideR.setMaximum(255);
        slideR.setMinimum(0);
        slideR.setPaintTicks(true);
        slideR.setPaintLabels(true);
        slideR.setMinorTickSpacing(10);
        slideR.setMajorTickSpacing(50);
        panelSlide.add(slideR);
 
        // ici slideG ... panelSlide.add(slideG);
        // ici slideB ... panelSlide.add(slideB);
 
        // on rajoute le panelBouton et panelSlide dans panel ...
 
        // on rajoute le tout (panel1 au nord, panel au centre, panel2 au sud) dans la fenêtre 
 
    public void actionPerformed(ActionEvent e) {
 
        String lib = ((JRadioButton) e.getSource()).getActionCommand();
 
        if ( lib.equals(b1)) {
            slideR.addChangeListener(new ListenerSlideRGB(panel1,slideR,slideG,slideB));
            slideG.addChangeListener(new ListenerSlideRGB(panel1,slideR,slideG,slideB));
            slideB.addChangeListener(new ListenerSlideRGB(panel1,slideR,slideG,slideB));
        }
 
        if ( lib.equals(b2)) {  
            slideR.addChangeListener(new ListenerSlideRGB(panel2,slideR,slideG,slideB));
            slideG.addChangeListener(new ListenerSlideRGB(panel2,slideR,slideG,slideB));
            slideB.addChangeListener(new ListenerSlideRGB(panel2,slideR,slideG,slideB));
        }
    }
}
 
/* Class ListenerSlideRGB */
public class ListenerSlideRGB implements ChangeListener{
 
    PanneauExt panneau;
    JSlider slide1, slide2, slide3;
 
    public ListenerSlideRGB(PanneauExt pan, JSlider s1,JSlider s2,JSlider s3)
    {
        panneau = pan;
        slide1 = s1;
        slide2 = s2;
        slide3 = s3;
    }
 
    public void stateChanged(ChangeEvent e) {
 
        int a = slide1.getValue();
        int b = slide2.getValue();
        int c = slide3.getValue();
        panneau.setBackground(new Color(a,b,c));
    }
}
Si quelqu'un peut m'aider svp sa serais super sympas je vous remercie d'avance.