Problème de fonctionnement de JColorChooser [Résolu]

Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Dernière intervention
11 janvier 2006
- - Dernière réponse : sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
344
Date d'inscription
mardi 18 mai 2004
Dernière intervention
23 juin 2006
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ducheseb
Messages postés
344
Date d'inscription
mardi 18 mai 2004
Dernière intervention
23 juin 2006
3
Merci
Tu fais:

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

"A game is a series of interesting choices." Sid Meier

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ducheseb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Dernière intervention
11 janvier 2006
0
Merci
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
Commenter la réponse de sateenb
Messages postés
3
Date d'inscription
lundi 9 janvier 2006
Dernière intervention
11 janvier 2006
0
Merci
Merci
ça me donne un bon point de départ

Je pense pouvoir m'en sortir avec tout ça!
Commenter la réponse de sateenb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.