Преобразование строки в цвет в Java

В .NET вы можете добиться чего-то вроде этого:

Color yellowColor = Color.FromName("yellow"); 

Есть ли способ сделать это на Java, не прибегая к размышлениям?

PS: Я не прошу альтернативных способов хранения / загрузки цветов. Я просто хочу знать, где это возможно, или нет.

Используйте reflection для доступа к статическому члену classа Color .

 Color color; try { Field field = Class.forName("java.awt.Color").getField("yellow"); color = (Color)field.get(null); } catch (Exception e) { color = null; // Not defined } 

Я пробовал что-то вроде этого, и он работал (по крайней мере, для JavaFX)

 String color = "red"; Color c = Color.web(color); gc.setFill(color); gc.fillOval(10, 10, 50, 40); 

Почему бы не создать для этого специальный class? Я сделал это, и он работает для меня. NB: Вам нужно будет включить этот class в свой пакет.

 import java.awt.Color; /** * A class to get the Color value from a string color name */ public class MyColor { private Color color; public MyColor(){ color = Color.WHITE; } /** * Get the color from a string name * * @param col name of the color * @return White if no color is given, otherwise the Color object */ static Color getColor(String col) { switch (col.toLowerCase()) { case "black": color = Color.BLACK; break; case "blue": color = Color.BLUE; break; case "cyan": color = Color.CYAN; break; case "darkgray": color = Color.DARK_GRAY; break; case "gray": color = Color.GRAY; break; case "green": color = Color.GREEN; break; case "yellow": color = Color.YELLOW; break; case "lightgray": color = Color.LIGHT_GRAY; break; case "magneta": color = Color.MAGENTA; break; case "orange": color = Color.ORANGE; break; case "pink": color = Color.PINK; break; case "red": color = Color.RED; break; case "white": color = Color.WHITE; break; } return color; } } 

В каком-то Container я просто называю это так

 public JPanel createStatusBar(){ JPanel statusBar = new JPanel(layoutManager); statusBar.setBackgroundColr(MyColor.color("green")); // and other properties return statusBar; 

Надеюсь это поможет.

Я открываю небольшую библиотеку с именем AWT Color Factory, которая предоставляет методы для создания экземпляров java.awt.Color из строковых представлений.

Эти методы являются аналогом статических методов, доступных в javafx.scene.paint.Color, таких как Color.web (…) или Color.valueOf (…)

Библиотека чрезвычайно легкая и не зависит от JavaFX.

  • Цветовой индекс Star BV до уровня RGB
  • Определить цвет шрифта на основе цвета фона
  • Цвет фона элемента ListBox (winforms)
  • Преобразование цвета HSL в RGB
  • Как преобразовать целое число цвета в шестнадцатеричную строку в Android?
  • Как сделать точки одним цветом, когда третий столбец равен нулю, а другой цвет - в Gnuplot?
  • Есть ли простой способ сравнить, насколько близки два цвета друг к другу
  • Получить цвет-int из цветового ресурса
  • Преобразование шестнадцатеричного цвета в RGB и наоборот
  • Как рассчитать цвет RGB, указав альфа-смешение?
  • Разница между Color.red и Color.RED
  • Давайте будем гением компьютера.