La couleur de la Classe en Java
J'ai une question concernant l'awt Color
classe en Java.
Je suis actuellement en utilisant la catégorie des abréviations telles que Color.RED
et Color.BLACK
. J'ai aussi une liste de trois nombres entiers tels que les suivants:
int var1 = 0
int var2 = 0
int var3 = 255
Est-il une méthode pour convertir ces entiers en Java Color
nom?
- Vous êtes à la recherche pour créer une couleur à l'aide de ces 3 variables (parce qu'il y a une Couleur constructeur qui le fait), ou d'obtenir les associés abréviation (dans votre exemple,
Color.BLUE
)? - Les couleurs n'ont pas de noms.
- Peut-être un double à ceci : stackoverflow.com/questions/4126029/...
- Vérification de la Documentation Comme AntonH dit, si vous souhaitez simplement créer une nouvelle Couleur que vous pouvez faire
Color(float r, float g, float b)
- Ou, puisque vous êtes en indiquant
int
s,Color (int r, int g, int b);
. - votre question n'a pas de sens, et je suis d'accord avec JB Nizet, "les couleurs n'ont pas de noms" Pouvez-vous modifier votre question?
- stackoverflow.com/questions/18022364/.... jetez un oeil à ce
- Mes excuses pour la mauvaise formulation, lorsque j'utilise la méthode de la Couleur(0, 0, 255), je reçois l'erreur impossible de trouver le symbole de pointage à la méthode de la Couleur(int,int,int), malgré le fait que j'ai importés de java.awt.De couleur?
- Impossible de trouver le symbole?
- Vous devez utiliser le
new
à l'opérateur de créer une nouvelle instance de la Couleur:new Color(0, 0, 255)
- excellent, merci
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucun moyen de le faire avec une méthode unique dans la Java des classes de base. Cependant, vous pouvez assez facilement faire vous-même de deux manières.
Première
Créer un nouveau
Color
de l'valeurs RVB vous avez:Puis
Class
objet de laColor
classe avecgetClass()
.getEnumConstants()
.Tableaux.stream()
filter()
, donc il contient tous les enum constantes que l'égalité de la couleur vous fait (il devrait y avoir un ou zéro).toArray()
pour activer le flux dans un tableau.[0]
. Cela permettra de jeter unArrayIndexOutOfBoundsException
si il n'y a pas une couleur prédéfinie correspondant à votre couleur.Enum
'stoString()
.Deuxième moyen
Tout d'abord, créez un
HashMap
deColor
s qui contient toutes les couleurs que vous souhaitez:Ensuite, créez un nouveau
Color
de l'valeurs RVB vous avez:Dernier,
get
la valeur danscolors
pour la clécolor
:Autant que je sache, nous n'avons pas une telle bibliothèque pour accéder directement à une des couleurs à partir des Constantes de.
Mais nous pouvons gérer le faire à l'aide de Couleur Hexadécimale de la Bibliothèque en Java.
Références :
Hex
Classe De Couleur
Il n'y a pas de fonction pour ce genre de comportement, mais vous pourriez faire quelque chose comme ceci:
Il ya quelques options à partir d'ici, peut-être que vous voulez le plus proche de la couleur? Dans ce cas, vous pourriez essayer et régler la distance d'une certaine manière (ici par la distance à partir de chaque r,g,b de coordonnées, certes pas la meilleure méthode, mais assez simple pour cet exemple, cette page du wiki a une bonne discussion sur les méthodes plus rigoureuses)
Celui-ci doit préciser comment vous pourriez être en mesure de comparer à l'construite en couleurs à partir de la
Color
de la bibliothèque. Vous pouvez utiliser unMap
pour étendre les fonctionnalités supplémentaires pour vous permettent de définir autant de couleurs personnalisées que vous le souhaitez (quelque Chose @TheGuywithTheHat suggère ainsi) qui vous donne plus de contrôle sur le retour des noms de correspondance des couleurs, et permet pour vous d'aller par plus de couleurs que juste prédéfinis:Sans aider les bibliothèques, je dirais: Non. Surtout parce que pas tous RGB de la Couleur a un nom spécifique. Toutefois, vous pouvez bien sûr créer une fonction propre, qui essaie de faire correspondre certains de couleurs disponibles et de les livrer à quelque chose comme "Inconnu" si il n'y a pas de match.
La correspondance tentative pourrait théoriquement être fait à l'aide de la réflexion Java API...