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

API standards et tierces Java Discussion :

Color - compareTo


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut Color - compareTo
    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' :
    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};
    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
    public class Energie extends JScrollPane implements Constantes1 
    {   ...
    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
    if ((donnéesDUnePuiss.get(donnéesDUnePuiss.size()-1)).compareTo(COULEUR0) != 0)
    { ...
    Cette instruction fait donc appel
    • à 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
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    la méthode equals() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((donnéesDUnePuiss.get(donnéesDUnePuiss.size()-1)).equals(COULEUR0)) {
    Pour la class Color, et pour toutes les autres classes pour lesquelles ça peut avoir du sens de chercher si deux instances sont égales.

    compareTo(), ça sert à savoir si le premier est avant, égal, ou après le deuxième objet. Ça fait plein de sens avec les Integer ou les String, mais pas trop avec les Color.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Je savais pas que Java 18 était déjà sorti

    comme indiqué compareTo() sert a trier tandis que equals() sert a tester l’identité.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Points : 121
    Points
    121
    Par défaut
    Merci Thelvin et Bouye,
    avec un peu de retard hélàs car je dois éclaircir et résoudre un autre soucis, bizarre, concernant l'accès dans des classes à des constantes définies dans une 'Interface'.
    Je consulte d'abord les FAQ Java ainsi que les cours et tutoriels Java.
    Bien à vous tous.
    "Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)

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

Discussions similaires

  1. Coloration syntaxique
    Par _-Sky-_ dans le forum Composants
    Réponses: 4
    Dernier message: 03/01/2004, 21h58
  2. [windows] recherche outils coloration syntax. pour -> htm
    Par hpfx dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 02/10/2003, 01h52
  3. Coloration syntaxique ASM dans un RichEdit
    Par Crick dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2002, 01h53
  4. TObject->Color et composantes RGB
    Par Flo. dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/06/2002, 17h07
  5. [Kylix] Memo color
    Par Metal3d dans le forum EDI
    Réponses: 1
    Dernier message: 21/05/2002, 17h12

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