Преобразование строки в цвет в Java
В .NET вы можете добиться чего-то вроде этого:
Color yellowColor = Color.FromName("yellow");
Есть ли способ сделать это на Java, не прибегая к размышлениям?
PS: Я не прошу альтернативных способов хранения / загрузки цветов. Я просто хочу знать, где это возможно, или нет.
- Преобразование RGB в оттенки серого / интенсивность
- конвертировать шестнадцатеричный код в имя цвета
- Алгоритм цветового затухания?
- цвет андроида между двумя цветами, в зависимости от процента?
- Алгоритм случайного генерирования эстетически приятной цветовой палитры
- Как получить цвет из шестнадцатеричной строки цвета
- Выбор правильных верхних и нижних границ HSV для определения цвета с помощью `cv :: inRange` (OpenCV)
- как использовать HSL в Asp.net
- Использование цвета и color.darker в Android?
- Как печатать цвет в консоли с помощью System.out.println?
- Преобразование значений RGB в название цвета
- Последующее наблюдение: поиск точного «расстояния» между цветами
- CSS шестнадцатеричный RGBA?
Используйте 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.