[java] PB pour récupérer des valeurs.

Résolu/Fermé
padnom Messages postés 6 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 avril 2009 - 9 avril 2009 à 11:07
padnom Messages postés 6 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 avril 2009 - 14 avril 2009 à 14:46
Bonjour,

Voila je débute en java et dans le cadre d'un projet je dois mettre en place une palette graphique,
pour cela j'ai en tous 3 Panel principal un Panel se situant a gauche constitué de boutons qui va afficher ma palette graphique
un Panel se situant en haut a droite qui affichera la couleur courante sélectionné sur ma palette graphique et un autre qui me permettra d'ajouter des couleurs.

Mon problème est le suivant, je n'arrive pas lorsque je clique sur un de mes boutons de ma palette graphique, à récupérer la couleur pour la faire afficher sur le Panel en haut à droite, j'arrive cependant a faire afficher dans la console les valeurs de la couleur mais c'est tout.

J'espère avoir était clair.


/****************************************************************/
package palette;

import javax.swing.JComponent;
import javax.swing.JFrame;

import javax.swing.JPanel;

public class Palette extends JPanel {

public static void main(String[] args) {
JFrame frame = new JFrame("Palette de Couleurs");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent Palette = new Vue_palette(40, 40);
frame.setContentPane(Palette);
frame.setSize(600, 600);
frame.setVisible(true);

}

}
/****************************************************************/
package palette;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;

public class Vue_palette extends JPanel {

Vue_palette(int colonne, int ligne) {
super();
setName("Ma tablette");
setSize(600, 600);
setLayout(new GridLayout(1, 2, 2, 2));
this.add(palettegauche(colonne, ligne), BorderLayout.WEST);
this.add(palettedroite());
setVisible(true);

}

public JPanel palettegauche(int colonne, int ligne) {
int i = 0;
JPanel zone_couleur = new JPanel(new GridLayout(colonne, ligne));
Modele_palette couleur = new Modele_palette(colonne, ligne);
List<JButton> Liste_Boutton = new ArrayList<JButton>();
for (Color c : couleur.getTab_couleur()) {
Liste_Boutton.add(new JButton());
Liste_Boutton.get(i).setBackground(c);
zone_couleur.add(Liste_Boutton.get(i));
i++;
}
Controler_palette c_palette = new Controler_palette();
for (JButton b : Liste_Boutton) {
b.addActionListener(c_palette);
Couleur_courante = c_palette.getcouleur(b);
}

return zone_couleur;
}

/**
* Cree un JPanel de deux lignes et une colonne, on y ajoute la
* palettehautdroite et palettebasdroite
**/
public JPanel palettedroite() {
JPanel palettedroite = new JPanel(new GridLayout(2, 1, 2, 2));
palettedroite.add(palettehautdroite(null));
palettedroite.add(palettebasdroite());
return palettedroite;

}

/**
* ------------------------------------------------------------------------
* --------
**/
/**
* Cree un JPanel de une ligne et une colonne on y ajoute un Boutton cense
* representer la couleur courante
**/
public JPanel palettehautdroite(Event event) {
JPanel couleurCour = new JPanel(new GridLayout()); // Par d�faut 1
// ligne
// et 1 colonne
controleurBouton = new JButton(); // cr�ation du bouton
couleurCour.add(controleurBouton, BorderLayout.CENTER);
// // Ajout du
// bouton au
// JPanel

return couleurCour;
}

/**
* ------------------------------------------------------------------------
* --------
**/
/** Cree un JPanel de 3 lignes et 3 colonnes on y ajoute 3 sliders **/
public JPanel palettebasdroite() {
JPanel choixCouleur = new JPanel(new GridLayout(3, 3, 2, 2)); // GridLayout
// de 3
// lignes
// et 3
// colonnes

JLabel etiquetteRouge, etiquetteBleu, etiquetteVert;
JSlider glissiereRouge, glissiereBleu, glissiereVert;
JTextField affichageRouge, affichageBleu, affichageVert;
etiquetteRouge = new JLabel("Rouge:");
glissiereRouge = new JSlider(0, 255, 1);
affichageRouge = new JTextField(glissiereRouge.getValue());
etiquetteVert = new JLabel("Vert:");
glissiereVert = new JSlider(0, 255, 1);
affichageVert = new JTextField(glissiereVert.getValue());
etiquetteBleu = new JLabel("Bleu:");
glissiereBleu = new JSlider(0, 255, 1);
affichageBleu = new JTextField(glissiereBleu.getValue());
choixCouleur.add(etiquetteRouge);
choixCouleur.add(glissiereRouge);
choixCouleur.add(affichageRouge);
choixCouleur.add(etiquetteVert);
choixCouleur.add(glissiereVert);
choixCouleur.add(affichageVert);
choixCouleur.add(etiquetteBleu);
choixCouleur.add(glissiereBleu);
choixCouleur.add(affichageBleu);

Controler_palette c_slider = new Controler_palette();
glissiereVert.addChangeListener(c_slider);
glissiereRouge.addChangeListener(c_slider);
glissiereBleu.addChangeListener(c_slider);

return choixCouleur;
}

private Color Couleur_courante;
private Color[] couleur;
private JButton controleurBouton;
}

/****************************************************************/
package palette;

import java.awt.Color;

public class Modele_palette {
Modele_palette(int ligne, int colonne) {
tab_couleur = new Color[colonne * ligne];
for (int i = 0; i < colonne; i++) {
// Première boucle réalisant un fondu de noir vers la teinte (moitie
// superieure)
int j;
for (j = 0; j < ligne / 2; j++)
tab_couleur[i * ligne + j] = Color.getHSBColor((float) i
/ colonne, // Teinte
1, // Saturation
(float) j / ligne * 2); // luminosite

// Seconde boucle diminuant la saturation de la couleur (moitie
// inferieur)
for (; j < colonne; j++)
tab_couleur[i * ligne + j] = Color.getHSBColor((float) i
/ colonne, // Teinte
(float) (ligne - 1 - j) / ligne * 2, // Saturation
1); // luminosite
}

}

public Color[] getTab_couleur() {
return tab_couleur;
}

private Color[] tab_couleur;

}
/****************************************************************/
package palette;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Controler_palette implements ActionListener, ChangeListener {
private JButton boutton;

public Color getcouleur(JButton boutton) {
return boutton.getBackground();
}

public void actionPerformed(ActionEvent ev) {

JButton controleurBouton = (JButton) ev.getSource();
Color Couleur_bout_courant = controleurBouton.getBackground();

System.out.println(Couleur_bout_courant);

}

public void stateChanged(ChangeEvent ev) {
JSlider slider = (JSlider) ev.getSource();
int valeur = slider.getValue();
System.out.println(valeur);
}

private Color Couleur_bout_courant;

}

/****************************************************************/
A voir également:

5 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
11 avril 2009 à 20:17
Dans votre panel d'affichage de couleur, vous avez créé un bouton controleurBouton

Lorsque vous faites ceci :
public void actionPerformed(ActionEvent ev) {

JButton controleurBouton = (JButton) ev.getSource();
Color Couleur_bout_courant = controleurBouton.getBackground();

System.out.println(Couleur_bout_courant);

}

si j'ai bien suivi c'est le code pour changer la couleur de votre bouton, c'est là que vous voudriez changer la couleur du bouton du panel haut droit. Si c'est bien le cas alors il faut faire :
Dans la classe Vue_palette, passer le bouton controleurBouton en variable globale Private et créé un accesseur. Ceci fait son initialisation ( = new JButton()) devra être faite dans le new de la classe.
Ensuite dans l'actionPerformed :

public void actionPerformed(ActionEvent ev) {

JButton bouton = (JButton) ev.getSource();
Color couleur_bout_courant = bouton .getBackground();

controleurBouton.seyBackground(couleur_bout_courant);
System.out.println(Couleur_bout_courant);

}


Au passage votre fonction getCouleur est inutile, il vaut mieux la supprimer et remplacer les endroits où vous l'avez utilisée par bouton.getBackground(); puisqu'elle ne fait rien de plus
1
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
9 avril 2009 à 11:13
Normalement sur votre bouton représentant la couleur, vous faites
setBackground(la couleur)
0
padnom Messages postés 6 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 avril 2009
11 avril 2009 à 16:10
Je ne comprends pas exactement ce que vous voulez que je fasse.
merci encore
0
padnom Messages postés 6 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 avril 2009
12 avril 2009 à 11:39
Bonjour,
J'ai tenté d'appliquer ce que vous m'avez dit mais je n'arrive pas a voir ce que je dois faire lorsque vous me dites :"Ceci fait son initialisation ( = new JButton()) devra être faite dans le new de la classe. "

J'ai également fait quelques modification dans mon programme je vous montre ce que j 'ai fait dans vue_palette et controlleur_palette j'ai mis en gras ce que j'ai modifié :

merci encore.

package palette;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;

public class Vue_palette extends JPanel {

Vue_palette(int colonne, int ligne) {
super();
setName("Ma tablette");
setSize(600, 600);
setLayout(new GridLayout(1, 2, 2, 2));
this.add(palettegauche(colonne, ligne), BorderLayout.WEST);
this.add(palettedroite());
setVisible(true);

}

public JPanel palettegauche(int colonne, int ligne) {
int i = 0;
JPanel zone_couleur = new JPanel(new GridLayout(colonne, ligne));
Modele_palette couleur = new Modele_palette(colonne, ligne);
List<JButton> Liste_Boutton = new ArrayList<JButton>();
for (Color c : couleur.getTab_couleur()) {
Liste_Boutton.add(new JButton());
Liste_Boutton.get(i).setBackground(c);
zone_couleur.add(Liste_Boutton.get(i));
i++;
}
<gras>Controler_palette c_palette = new Controler_palette(this);

for (JButton b : Liste_Boutton) {
b.addActionListener(c_palette);
}

return zone_couleur;
}</gras>

/**
* Cree un JPanel de deux lignes et une colonne, on y ajoute la
* palettehautdroite et palettebasdroite
**/
public JPanel palettedroite() {
JPanel palettedroite = new JPanel(new GridLayout(2, 1, 2, 2));
palettedroite.add(palettehautdroite(null));
palettedroite.add(palettebasdroite());
return palettedroite;

}

/**
* ------------------------------------------------------------------------
* --------
**/
/**
* Cree un JPanel de une ligne et une colonne on y ajoute un Boutton cense
* representer la couleur courante
**/
public JPanel palettehautdroite(Event event) {
JPanel couleurCour = new JPanel(new GridLayout());
controleurBouton.setBackground(Couleur_courante);
couleurCour.add(controleurBouton, BorderLayout.CENTER);
// // Ajout du
// bouton au
// JPanel

return couleurCour;
}


/**
* ------------------------------------------------------------------------
* --------
**/
/** Cree un JPanel de 3 lignes et 3 colonnes on y ajoute 3 sliders **/
public JPanel palettebasdroite() {
JPanel choixCouleur = new JPanel(new GridLayout(3, 3, 2, 2)); // GridLayout
// de 3
// lignes
// et 3
// colonnes

JLabel etiquetteRouge, etiquetteBleu, etiquetteVert;
JSlider glissiereRouge, glissiereBleu, glissiereVert;
JTextField affichageRouge, affichageBleu, affichageVert;
etiquetteRouge = new JLabel("Rouge:");
glissiereRouge = new JSlider(0, 255, 1);
affichageRouge = new JTextField(glissiereRouge.getValue());
etiquetteVert = new JLabel("Vert:");
glissiereVert = new JSlider(0, 255, 1);
affichageVert = new JTextField(glissiereVert.getValue());
etiquetteBleu = new JLabel("Bleu:");
glissiereBleu = new JSlider(0, 255, 1);
affichageBleu = new JTextField(glissiereBleu.getValue());
choixCouleur.add(etiquetteRouge);
choixCouleur.add(glissiereRouge);
choixCouleur.add(affichageRouge);
choixCouleur.add(etiquetteVert);
choixCouleur.add(glissiereVert);
choixCouleur.add(affichageVert);
choixCouleur.add(etiquetteBleu);
choixCouleur.add(glissiereBleu);
choixCouleur.add(affichageBleu);

Controler_palette c_slider = new Controler_palette(this);
glissiereVert.addChangeListener(c_slider);
glissiereRouge.addChangeListener(c_slider);
glissiereBleu.addChangeListener(c_slider);

return choixCouleur;
}

public JButton getcontroleurBouton(){
return controleurBouton;
}

Color Couleur_courante;
private Color[] couleur;
private JButton controleurBouton ;
}
---------------------------------------------------------------------------------------------
package palette;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Controler_palette implements ActionListener, ChangeListener {
Vue_palette palette_couleur;
private JButton boutton;

public Controler_palette(Vue_palette palette_couleur) {
this.palette_couleur = palette_couleur;
}

public void actionPerformed(ActionEvent ev) {

JButton controleurBouton = (JButton) ev.getSource();
palette_couleur.Couleur_courante = controleurBouton.getBackground();
controleurBouton.setBackground(palette_couleur.Couleur_courante);
System.out.println(palette_couleur.Couleur_courante);

}


public void stateChanged(ChangeEvent ev) {
JSlider slider = (JSlider) ev.getSource();
int valeur = slider.getValue();
System.out.println(valeur);
}

private Color Couleur_courante;

}
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
12 avril 2009 à 13:15
public void actionPerformed(ActionEvent ev) {

JButton controleurBouton = (JButton) ev.getSource();
palette_couleur.Couleur_courante = controleurBouton.getBackground();
controleurBouton.setBackground(palette_couleur.Couleur_courante);
System.out.println(palette_couleur.Couleur_courante);

}

vous ne pouvez pas utiliser un bouton du nom de controleurBouton localement car il n'est alors pas possible de le différencier de la variable globale
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
padnom Messages postés 6 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 avril 2009
14 avril 2009 à 14:46
Voila j'ai réussi à faire mon code merci pour ton aide

package palette;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;

public class Vue_palette extends JPanel {

private JPanel panelDroit;
private JPanel panelHautDroit;
private JPanel panelBasDroit;
Color Couleur_courante;
private Color[] couleur;
JButton controleurBouton ;
private JSlider glissiereRouge=new JSlider(0, 255, 0);
private JSlider glissiereBleu=new JSlider(0, 255, 0);
private JSlider glissiereVert=new JSlider(0, 255, 0);
private JTextField affichageRouge = new JTextField();
private JTextField affichageBleu = new JTextField();
private JTextField affichageVert = new JTextField();


Vue_palette(int colonne, int ligne) {
super();
setName("Ma tablette");
setSize(600, 600);
setLayout(new GridLayout(1, 2, 2, 2));
this.add(palettegauche(colonne, ligne), BorderLayout.WEST);
panelDroit = palettedroite();
this.add(panelDroit);
setVisible(true);

}

public JPanel palettegauche(int colonne, int ligne) {
int i = 0;
JPanel zone_couleur = new JPanel(new GridLayout(colonne, ligne));
Modele_palette couleur = new Modele_palette(colonne, ligne);
List<JButton> Liste_Boutton = new ArrayList<JButton>();
for (Color c : couleur.getTab_couleur()) {
Liste_Boutton.add(new JButton());
Liste_Boutton.get(i).setBackground(c);
zone_couleur.add(Liste_Boutton.get(i));
i++;
}
Controler_palette c_palette = new Controler_palette(this);
for (JButton b : Liste_Boutton) {
b.addActionListener(c_palette);
}

return zone_couleur;
}

/**
* Cree un JPanel de deux lignes et une colonne, on y ajoute la
* palettehautdroite et palettebasdroite
**/
public JPanel palettedroite() {
JPanel palettedroite = new JPanel(new GridLayout(2, 1, 2, 2));

panelHautDroit = palettehautdroite();
panelBasDroit=palettebasdroite();
palettedroite.add(panelHautDroit);
palettedroite.add(panelBasDroit);
return palettedroite;

}

/**
* ------------------------------------------------------------------------
* --------
**/
/**
* Cree un JPanel de une ligne et une colonne on y ajoute un Boutton cense
* representer la couleur courante
**/
public JPanel palettehautdroite() {
JPanel couleurCour = new JPanel(new GridLayout());
return couleurCour;
}

/**
* ------------------------------------------------------------------------
* --------
**/
/** Cree un JPanel de 3 lignes et 3 colonnes on y ajoute 3 sliders **/
public JPanel palettebasdroite() {
JPanel choixCouleur = new JPanel(new GridLayout(4, 3, 2, 2)); // GridLayout
// de 3
// lignes
// et 3
// colonnes

JLabel etiquetteRouge, etiquetteBleu, etiquetteVert;
etiquetteRouge = new JLabel("Rouge:");
etiquetteVert = new JLabel("Vert:");
etiquetteBleu = new JLabel("Bleu:");
choixCouleur.add(etiquetteRouge);
choixCouleur.add(glissiereRouge);
choixCouleur.add(affichageRouge);
choixCouleur.add(etiquetteVert);
choixCouleur.add(glissiereVert);
choixCouleur.add(affichageVert);
choixCouleur.add(etiquetteBleu);
choixCouleur.add(glissiereBleu);
choixCouleur.add(affichageBleu);
JButton ajout = new JButton("ajouter");
choixCouleur.add(ajout);
Controler_palette c_slider = new Controler_palette(this);
Controler_palette c_ajout = new Controler_palette(this);
ajout.addActionListener(c_ajout);
glissiereVert.addChangeListener(c_slider);
glissiereRouge.addChangeListener(c_slider);
glissiereBleu.addChangeListener(c_slider);



return choixCouleur;
}

public JButton getcontroleurBouton(){
return controleurBouton;
}

public void setPanelHautDroit(JPanel panelHautDroit) {
this.panelHautDroit = panelHautDroit;
}

public JPanel getPanelHautDroit() {
return panelHautDroit;
}

public void setPanelBasDroit(JPanel panelBasDroit) {
this.panelBasDroit = panelBasDroit;
}

public JPanel getPanelBasDroit() {
return panelBasDroit;
}

public void setGlissiereBleu(JSlider glissiereBleu) {
this.glissiereBleu = glissiereBleu;
}

public JSlider getGlissiereBleu() {
return glissiereBleu;
}

public void setGlissiereRouge(JSlider glissiereRouge) {
this.glissiereRouge = glissiereRouge;
}

public JSlider getGlissiereRouge() {
return glissiereRouge;
}

public void setGlissiereVert(JSlider glissiereVert) {
this.glissiereVert = glissiereVert;
}

public JSlider getGlissiereVert() {
return glissiereVert;
}

public void setAffichageVert(JTextField affichageVert) {
this.affichageVert = affichageVert;
}

public JTextField getAffichageVert() {
return affichageVert;
}

public void setAffichageBleu(JTextField affichageBleu) {
this.affichageBleu = affichageBleu;
}

public JTextField getAffichageBleu() {
return affichageBleu;
}

public void setAffichageRouge(JTextField affichageRouge) {
this.affichageRouge = affichageRouge;
}

public JTextField getAffichageRouge() {
return affichageRouge;
}



}
-------------------------------------------------------------------------------------------------------------
package palette;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Controler_palette implements ActionListener, ChangeListener {
Vue_palette palette_couleur;

public Controler_palette(Vue_palette palette_couleur) {
this.palette_couleur = palette_couleur;

}


public void actionPerformed(ActionEvent ev) {


JButton controleurBouton = (JButton) ev.getSource();

if (controleurBouton.getLabel()== "ajouter"){
System.out.println("sa marche");
}
else{
palette_couleur.Couleur_courante = controleurBouton.getBackground();
int Red =palette_couleur.Couleur_courante.getRed();
int Green =palette_couleur.Couleur_courante.getGreen();
int Blue =palette_couleur.Couleur_courante.getBlue();
palette_couleur.getPanelHautDroit().setBackground(palette_couleur.Couleur_courante);
palette_couleur.getAffichageBleu().setText(""+Blue);
palette_couleur.getAffichageVert().setText(""+Green);
palette_couleur.getAffichageRouge().setText(""+Red);
palette_couleur.getGlissiereBleu().setValue(Blue);
palette_couleur.getGlissiereVert().setValue(Green);
palette_couleur.getGlissiereRouge().setValue(Red);
}
}

public void stateChanged(ChangeEvent ev) {
JSlider slider = (JSlider) ev.getSource();
int Red=palette_couleur.getGlissiereRouge().getValue();
int Green=palette_couleur.getGlissiereVert().getValue();
int Blue=palette_couleur.getGlissiereBleu().getValue();
Color CouleurAjout=new Color(Red,Green,Blue);
palette_couleur.getPanelHautDroit().setBackground(CouleurAjout);
palette_couleur.getAffichageBleu().setText(""+Blue);
palette_couleur.getAffichageVert().setText(""+Green);
palette_couleur.getAffichageRouge().setText(""+Red);

}



}
0