Bonjour.
J'ai une petite question concernant la comparaison de couleurs en Java.
On sait qu'en Java, on peut mettre dans un fichier d'interface 'Constantes1'
⦁ Les signatures de méthodes que la classe qui implémente cette interface doit implémenter,
⦁ mais aussi des constantes.
Dans mon cas, j'ai
⦁ une suite de constantes 'Color COULEURn'
⦁ une énumération regroupant cette suite de constantes, intitulée 'paletteCouleurs', soit un array de constantes de type 'Color' :
J'ai aussi une classe 'Energie' dont une méthode utilise ces constantes (sans implémentation de méthode) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Color COULEUR0 = new Color((float)(0.876), (float)(0.876), (float)(0.876)); // Blanc grisé Color COULEUR1 = new Color((float)(0.6), (float)(1.0), (float)(0.8)); // Vert vif Color COULEUR2 = new Color((float)(0.3), (float)(0.7), (float)(0.5)); // Vert pâle Color COULEUR3 = new Color((float)(0.6), (float)(0.8), (float)(1.0)); // Bleu vif Color COULEUR4 = new Color((float)(0.3), (float)(0.5), (float)(0.7)); // Bleu pâle Color COULEUR5 = new Color((float)(1.0), (float)(0.6), (float)(0.8)); // Rouge vif Color COULEUR6 = new Color((float)(0.7), (float)(0.3), (float)(0.5)); // ... Color COULEUR7 = new Color((float)(0.8), (float)(1.0), (float)(0.6)); // Vert Color COULEUR8 = new Color((float)(0.5), (float)(0.7), (float)(0.3)); // Color COULEUR9 = new Color((float)(0.8), (float)(0.6), (float)(1.0)); // Bleu Color COULEUR10 = new Color((float)(0.5), (float)(0.3), (float)(0.7)); // Color[] paletteCouleurs = new Color[] {COULEUR0, COULEUR1, COULEUR2, COULEUR3, COULEUR4, COULEUR5, COULEUR6, COULEUR7, COULEUR8, COULEUR9, COULEUR10};Dans cette classe se trouve une méthode qui, entre autres, ne doit effectuer une suite d'instructions qu'à condition que le dernier élément d'une ArrayList contienne l'un des codes de type <I>Color</I> listé ci-avant. Exception : si COULEUR0, ne pas effectuer cette suite d'instructions. Pour évaluer cette condition, j'ai donc encodé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public class Energie extends JScrollPane implements Constantes1 { ...
Cette instruction fait donc appel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if ((donnéesDUnePuiss.get(donnéesDUnePuiss.size()-1)).compareTo(COULEUR0) != 0) { ...
- à la constante COULEUR0 (pas à l'énumération 'paletteCouleurs')
- au nom de la constante (Couleur0); pas à la valeur associée (triplet de 'float')
Le pré-compilateur de mon IDE objecte bien sûr qu'il ne trouve aucune méthode 'compareTo' dans la classe Color.
Ma question
Le 'if()' ne devant reconnaître que le nom d'une des constantes COULEURn et non les trois valeurs de couleur que la constante recèle, comment procéder ?
⦁ Quelle méthode de Color employer ? https://docs.oracle.com/en/java/java...awt/Color.html
⦁ Créer une classe héritant de Color et implémentant une méthode 'compareColorName' ?
⦁ Utiliser la classe 'Class' ?
Quelqu'un pourrait-il m'éclairer ? me donner un exemple ?
Merci d'avance pour vos réponses ainsi qu'à Développez.com pour l'impressionnante offre de son site et ses précieux forum.
Bien à vous.
PS: J'utilise
⦁ Java : 11.0.10 - 2021-01-19 LTS
⦁ Java SE Runtime Environment 18.9
⦁ JDK
⦁ Apache NetBeans IDE 12.3
⦁ OS : Windows 10 - 64 bits
Partager