So Drucken Sie die String-Repräsentation der Farbe in Java
Ich habe ein array von Farben von Größe n ist. In meinem Programm, die Anzahl der teams ist immer <= n, und ich muss weisen Sie jedem team eine eigene Farbe. Das ist meine Farbe-array:
private static Color[] TEAM_COLORS = {Color.BLUE, Color.RED, Color.CYAN, Color.GREEN, Color.ORANGE, Color.PINK};
Wenn ich drucken Informationen über die Spieler in der Konsole, ich will drucken, was Farbe Sie zugeordnet ist. Wenn ich drucken Sie die Farbe, die ich bekommen
java.awt.Color[r=...,g=...,b=...].
Ich verstehe, dass dies ist, wie die Java druckt Farben. Ich Frage mich, ob es eine Möglichkeit statt Druck-BLAU, ROT, etc. (so dass die vordefinierte Farbe, string).
- Wenn
RED
ist 255,0,0, was ist der name für 254,0,0? Erwarten Sie 16.777.216 Farben Namen? - mögliche Duplikate von Java-color-code zu konvertieren Farbe name
- Diese statischen Felder, die Sie verwenden aus der
Color
Klasse gibt es für die Bequemlichkeit und ReferenzColor
Objekte, die nicht über jede Art von textuellen Namen; Sie sind die RGB-Werte. - Ich nehme das zurück, bei einem genaueren Blick auf die post macht mir klar, die OP war im Gespräch über die pre-definierte Farben und eine begrenzte Anzahl von Ihnen.
- Ja, aber es ändert nichts, es gibt keine passenden
String
s für Sie in derColor
Klasse. Sie haben zu tun, die Zuordnung selbst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausweitung @Jon_Skeet Antwort durch das hinzufügen von Namen der enum.
HINWEIS: WENN die Abstimmung dieser pls vote @Jon_Skeet Antwort auch, wie es ist Erweiterung, dass...
Eine Möglichkeit wäre das erstellen einer
NamedColor
enum:Würden Sie dann machen Ihre
TEAM_COLORS
array-ein array vonNamedColor
Werte stattColor
Werte, und Holen Sie sich das AWT-Farbe, wenn Sie es brauchen. Die Standard -toString
Implementierung von enum ist der name.Andere alternative wäre, erstellen Sie Ihre eigenen
Map<Color, String>
und konsultieren, wenn Sie Sie brauchen, die string-Darstellung für eine Farbe.colorName
auch als ein Attribut an den enum...so ist alles an einem Ort.colorName
member-variable, und verwenden die api nur, die holt aus der externen Quelle über eine helper-Klasse. Aber wahr, alle diese soln muss gedacht werden, entsprechend der situation vor der Wahl.Hier ist eine Reflexion-basierter Ansatz:
Beispiele:
Demo: http://ideone.com/6cIBD
Funktioniert das nur mit den vorgegebenen Farben als Felder in
java.das awt.Color
, nämlich: weiß, hellgrau, Grau, dunkelgrau, schwarz, rot, pink, orange, gelb, grün, magenta, cyan und blau.Könnten Sie eine Klasse erstellen, die speichert sowohl ein
String
repräsentiert den Namen der Farbe, sowie dieColor
selbst.Wenn Sie möchten, dass Ihre NamedColor verwendet werden, als java.das awt.Farbe und Sie haben nicht viele Farben, die Sie erweitern können und speichern den Namen.
Können Sie versuchen, mit
String.valueOf(Farbe.getRGB())