Color-Klasse in Java
Ich habe eine Frage bezüglich der awt Color
Klasse in Java.
Ich bin derzeit mit der Klasse Abkürzungen wie Color.RED
und Color.BLACK
. Ich habe auch eine Liste mit drei Ganzzahlen, die wie die folgenden:
int var1 = 0
int var2 = 0
int var3 = 255
Ist es eine Methode zur Konvertierung von ganzen zahlen in die entsprechenden Java - Color
Namen?
- Sind Sie auf der Suche zum erstellen einer Farbe mit diesen 3 Variablen (weil es eine Farbe Konstruktor, der das tut), oder die zugehörige Abkürzung (in deinem Beispiel
Color.BLUE
)? - Farben haben keine Namen.
- Vielleicht ein Duplikat dieses : stackoverflow.com/questions/4126029/...
- Dokumentation Als AntonH sagte, wenn Sie wollen einfach nur eine neue Farbe erstellen, die Sie tun können
Color(float r, float g, float b)
- Oder, da Sie angibt
int
sColor (int r, int g, int b);
. - deine Frage macht keinen Sinn überhaupt, und ich Stimme mit JB Nizet, "Farben haben keine Namen", Können Sie ändern Sie Ihre Frage?
- stackoverflow.com/questions/18022364/.... werfen Sie einen Blick auf diese
- Entschuldigung für die schlechte Formulierung, wenn ich mit der Methode Color(0, 0, 255) bekomme ich die Fehlermeldung cannot find symbol zum Hinweis auf die Methode Color(int,int,int), trotz der Tatsache, ich habe java importiert.das awt.Farbe?
- Kann nicht finden das symbol?
- Sie müssen verwenden Sie die
new
- operator zum erstellen einer neuen Instanz der Farbe:new Color(0, 0, 255)
- sehr gut, danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit, dies zu tun mit einer einzigen Methode in der Java-core-Klassen. Allerdings können Sie relativ leicht selbst auf zwei Arten.
Ersten Weise
Erstellen Sie eine neue
Color
aus der RGB-Werte Sie haben:Dann
Class
Objekt aus derColor
Klasse mitgetClass()
.getEnumConstants()
.- Arrays.stream()
filter()
, so enthält Sie nur alle enum-Konstanten, die gleich der Farbe, die Sie gemacht (es sollte entweder eins oder null).toArray()
drehen Sie den stream in ein array.[0]
. Dieser wirft einenArrayIndexOutOfBoundsException
wenn es nicht eine vordefinierte Farbe, passend zu Ihrer Farbe.Enum
'stoString()
.Zweite Möglichkeit
Erstellen Sie zunächst eine
HashMap
vonColor
s, enthält alle Farben, die Sie wollen:Erstellen Sie dann eine neue
Color
aus der RGB-Werte Sie haben:Letzten,
get
der Wert incolors
für den Schlüsselcolor
:Soweit ich weiß, wir haben keine solchen Bibliothek gelangen Sie direkt zu den Farben aus der Konstanten.
Aber wir verwalten können, tun Sie es mit Hex-Farbe-Bibliothek in Java.
Referenzen :
Hex
Farbe Klasse
Gibt es keine set-Funktion für diese Art von Verhalten, aber Sie konnte etwas wie das hier tun:
Gibt es ein paar Optionen hier auch, vielleicht wollen Sie die nächste Farbe? In dem Fall könnten Sie versuchen, und beheben Sie den Abstand irgendwie (hier durch den Abstand zwischen den einzelnen r -, g -, b-Koordinate, zwar nicht die beste Methode aber einfach genug für dieses Beispiel, diese wiki-Seite hat sich eine gute Diskussion über strengere Methoden)
Diese sollten beschreiben, wie Sie wäre in der Lage zu vergleichen, um die eingebauten Farben aus der
Color
Bibliothek. Man könnte einMap
erweitern Sie die Funktionalität noch weiter zu ermöglichen, zu bestimmen, wie viele benutzerdefinierte Farben, wie Sie mögen (Etwas @TheGuywithTheHat vermuten lässt, wie gut), das gibt Ihnen mehr Kontrolle über die Rückkehr Namen von aufeinander abgestimmten Farben, und ermöglicht für Sie zu gehen, um mehr Farben als nur die vorgefertigte:Ohne zu helfen, Bibliotheken würde ich sagen: Nein. Vor allem, weil nicht jeder RGB-Farbe hat einen bestimmten Namen. Aber natürlich könnten Sie bauen eine eigene Funktion, die versucht, auf einige der verfügbaren Farben und liefern so etwas wie "Unbekannt", wenn keine übereinstimmung vorhanden ist.
Den matching-versuchen könnte theoretisch mit Hilfe der Java-reflection-API...