Problème de fonctionnement de JColorChooser

Résolu
sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
11 janvier 2006
- 10 janv. 2006 à 22:15
sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
11 janvier 2006
- 11 janv. 2006 à 15:51
Bonjour Tous,

Je débute tout juste avec SWING.
J'essaie de mettre en place un JColorChooser afin de permettre aux utilisateurs de mon application de choisir la couleur des caractères qui s'afficheront sur leur écran.

Grâce aux précédents post sur le sujet, je réussi à afficher correctement mon JColorChooser mais je ne peux réaliser aucune action : les bouton OK et ANNULER ne sont pas activés et même lorsque je clique sur la palette rien ne se passe..

J'ai forcément dû oublier un ptit détail.. mais lequel ?

Voici la méthode qui est appelée lorsque je clique sur le bouton d'affichage du JColorChooser :

JLabel banner;

/**
* Procedure qui affiche le JColorChooser
*/
public void askColor(){

final JDialog boiteDialog = new JDialog();
boiteDialog.getContentPane().setLayout(new BorderLayout());

banner = new JLabel();
banner.setText("TEST !!!");
banner.setForeground(Color.RED);

boiteDialog.getContentPane().add(banner, BorderLayout.NORTH);

final JColorChooser jColorChooser = new JColorChooser();
jColorChooser.setVisible(true);

//Mise dans un tableau de ses différents éléments(ses panels)
AbstractColorChooserPanel[] panel = jColorChooser.getChooserPanels();
//Enléve les autres panels(index 0 = nuancier, index1=HSB, index2 = RVB)
jColorChooser.removeChooserPanel(panel[1]);
jColorChooser.removeChooserPanel(panel[2]);


jColorChooser.getSelectionModel().addChangeListener( new ChangeListener(){
public void stateChanged(ChangeEvent evt) {
banner.setForeground(jColorChooser.getColor());
return;
}
});

boiteDialog.getContentPane().add(jColorChooser, BorderLayout.CENTER);
boiteDialog.setVisible(true);
boiteDialog.setLocation(420, 400);

JPanel buttonPanel = new JPanel();

JButton ok = new JButton("OK");
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
Color c = jColorChooser.getColor();
jButton9.setBackground(c);

boiteDialog.setVisible( false );
repaint();
return;
}
});

buttonPanel.add(ok);

JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
boiteDialog.setVisible(false);
return;
}
});

buttonPanel.add(cancel);
boiteDialog.getContentPane().add(buttonPanel, BorderLayout.SOUTH);

boiteDialog.pack();

}

Merci d'avance pour votre aide

4 réponses

cs_ducheseb
Messages postés
344
Date d'inscription
mardi 18 mai 2004
Statut
Membre
Dernière intervention
23 juin 2006
7
10 janv. 2006 à 22:22
Tu peux utiliser

Color c = JColorChooser.showDialog(null, "Choisir une couleur",Color.black);

c contiendra mla couleur selectionné après avoir pressé ok

"A game is a series of interesting choices." Sid Meier
3
cs_ducheseb
Messages postés
344
Date d'inscription
mardi 18 mai 2004
Statut
Membre
Dernière intervention
23 juin 2006
7
11 janv. 2006 à 08:59
Tu fais:

if (c != null){
// setBackgroundColor(...);
}

"A game is a series of interesting choices." Sid Meier
3
sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
11 janvier 2006

10 janv. 2006 à 23:14
Merci, effectivement il suffisait d'écrire cette ligne de code..

Ma méthode se limite maintenant a ceci :
------------------------------------------------------------------------------------
public void askColor(){

final JColorChooser jColorChooser = new JColorChooser();
jColorChooser.setVisible(true);
//Mise dans un tableau de ses différents éléments(ses panels)
AbstractColorChooserPanel[] panel = jColorChooser.getChooserPanels();
//Enléve les autres panels(index 0 = nuancier, index1=HSB, index2 = RVB)
jColorChooser.removeChooserPanel(panel[1]);
jColorChooser.removeChooserPanel(panel[2]);

c = jColorChooser.showDialog(null, "Choisir une couleur",Color.black);

}
------------------------------------------------------------------------------------

Maintenant.. cela me pose des interrogations supplementaires car je me retrouve avec les 3 panneaux au lieu du nuancier seulement
En effet les lignes en orange ne font plus aucun effet!

Et.. je ne voudrais pas abuser mais comment puis-je utiliser correctement cette variable c,
pour qu'elle mette a jour mon champs uniquement lorsque je clique sur "OK" ?

Merci
0
sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
11 janvier 2006

11 janv. 2006 à 15:51
Merci
ça me donne un bon point de départ

Je pense pouvoir m'en sortir avec tout ça!
0