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 :

ChangeListener et Slider


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    Février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : Février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut ChangeListener et Slider
    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.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La méthode addChangeListener fait exactement ce qu'elle dit. Elle ajoute un listener, elle ne remplace pas le listener existant. Donc en cliquant sur les radio bouton, tu ajoute des listeners supplémentaire, mais tu ne supprime pas les anciens comportement. Ce que tu dois faire, c'est avoir un seul listener dans ton slider (et non pas un différent par radio bouton) et dans ce listener, tu regarde quelle est le radio button sélectionné pour savoir quel panneau modifier.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    Février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : Février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    J'ai suivi ton conseil et voici ce que j'ai fais

    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
            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);
            // Ajout à ce niveau du listener pour le slideR
            slideR.addChangeListener(this);
            panelSlide.add(slideR);
    
           	public void stateChanged(ChangeEvent e) {		
                    // ici je regarde quel bouton est sélectionné pour savoir quel panneau modifier.
    	}
    Merci infiniment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/06/2005, 19h23
  2. [MFC]Utilisation d'un SLIDER , problème de conversion
    Par sylvain_c42 dans le forum MFC
    Réponses: 1
    Dernier message: 10/05/2005, 14h31
  3. [Event] ChangeListener sur JSpinner
    Par tomburn dans le forum Général Java
    Réponses: 2
    Dernier message: 01/04/2005, 16h45
  4. [MFC] Plusieurs sliders en un
    Par bigquick dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2005, 17h53
  5. affichage valeur d'un Slider
    Par djiwalloo dans le forum MFC
    Réponses: 4
    Dernier message: 24/11/2004, 10h28

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