Java 从颜色实例获取表示颜色名称的字符串
如何从color类的实例中获取表示颜色名称(而不是awt RGB代码)的字符串 比如我有Java 从颜色实例获取表示颜色名称的字符串,java,reflection,colors,awt,Java,Reflection,Colors,Awt,如何从color类的实例中获取表示颜色名称(而不是awt RGB代码)的字符串 比如我有 Color black=Color.BLACK; 我想得到字符串“Black” 我知道使用Java反射应该可以做到这一点,但我对它不是很熟悉。谢谢。您可以使用预定义的map在其上插入一些预先定义的颜色,然后使用它获取名称 HashMap<Color,String> hm = new HashMap <Color,String>(); hm.put(Color.BLACK,"Blac
Color black=Color.BLACK;
我想得到字符串“Black”
我知道使用Java反射应该可以做到这一点,但我对它不是很熟悉。谢谢。您可以使用预定义的
map
在其上插入一些预先定义的颜色,然后使用它获取名称
HashMap<Color,String> hm = new HashMap <Color,String>();
hm.put(Color.BLACK,"Black");
.
.
.
hm.get(Color.BLACK)
HashMap hm=newhashmap();
hm.put(颜色。黑色,“黑色”);
.
.
.
hm.get(颜色:黑色)
您可以使用预定义的映射
在其上插入一些预先定义的颜色,然后使用它获取名称
HashMap<Color,String> hm = new HashMap <Color,String>();
hm.put(Color.BLACK,"Black");
.
.
.
hm.get(Color.BLACK)
HashMap hm=newhashmap();
hm.put(颜色。黑色,“黑色”);
.
.
.
hm.get(颜色:黑色)
您可以使用预定义的映射
在其上插入一些预先定义的颜色,然后使用它获取名称
HashMap<Color,String> hm = new HashMap <Color,String>();
hm.put(Color.BLACK,"Black");
.
.
.
hm.get(Color.BLACK)
HashMap hm=newhashmap();
hm.put(颜色。黑色,“黑色”);
.
.
.
hm.get(颜色:黑色)
您可以使用预定义的映射
在其上插入一些预先定义的颜色,然后使用它获取名称
HashMap<Color,String> hm = new HashMap <Color,String>();
hm.put(Color.BLACK,"Black");
.
.
.
hm.get(Color.BLACK)
HashMap hm=newhashmap();
hm.put(颜色。黑色,“黑色”);
.
.
.
hm.get(颜色:黑色)
Color
类只有很少几个非静态字段
name | type
----------+---------------
value | int
frgbvalue | float[]
fvalue | float[]
falpha | float
cs | java.awt.color.ColorSpace
并且这些字段都不存储颜色名称。此外,它没有任何方法可以检查您使用的颜色是否等于其预定义颜色之一,并存储在静态引用中,如
public final static Color black = new Color(0, 0, 0);
public final static Color BLACK = black;
但是,没有什么可以阻止您实现自己的方法,它可以为您实现。这种方法看起来像
public static Optional<String> colorName(Color c) {
for (Field f : Color.class.getDeclaredFields()) {
//we want to test only fields of type Color
if (f.getType().equals(Color.class))
try {
if (f.get(null).equals(c))
return Optional.of(f.getName().toLowerCase());
} catch (IllegalArgumentException | IllegalAccessException e) {
// shouldn't not be thrown, but just in case print its stacktrace
e.printStackTrace();
}
}
return Optional.empty();
}
输出:
black
no name found
no name found
Color
类只有很少几个非静态字段
name | type
----------+---------------
value | int
frgbvalue | float[]
fvalue | float[]
falpha | float
cs | java.awt.color.ColorSpace
并且这些字段都不存储颜色名称。此外,它没有任何方法可以检查您使用的颜色是否等于其预定义颜色之一,并存储在静态引用中,如
public final static Color black = new Color(0, 0, 0);
public final static Color BLACK = black;
但是,没有什么可以阻止您实现自己的方法,它可以为您实现。这种方法看起来像
public static Optional<String> colorName(Color c) {
for (Field f : Color.class.getDeclaredFields()) {
//we want to test only fields of type Color
if (f.getType().equals(Color.class))
try {
if (f.get(null).equals(c))
return Optional.of(f.getName().toLowerCase());
} catch (IllegalArgumentException | IllegalAccessException e) {
// shouldn't not be thrown, but just in case print its stacktrace
e.printStackTrace();
}
}
return Optional.empty();
}
输出:
black
no name found
no name found
Color
类只有很少几个非静态字段
name | type
----------+---------------
value | int
frgbvalue | float[]
fvalue | float[]
falpha | float
cs | java.awt.color.ColorSpace
并且这些字段都不存储颜色名称。此外,它没有任何方法可以检查您使用的颜色是否等于其预定义颜色之一,并存储在静态引用中,如
public final static Color black = new Color(0, 0, 0);
public final static Color BLACK = black;
但是,没有什么可以阻止您实现自己的方法,它可以为您实现。这种方法看起来像
public static Optional<String> colorName(Color c) {
for (Field f : Color.class.getDeclaredFields()) {
//we want to test only fields of type Color
if (f.getType().equals(Color.class))
try {
if (f.get(null).equals(c))
return Optional.of(f.getName().toLowerCase());
} catch (IllegalArgumentException | IllegalAccessException e) {
// shouldn't not be thrown, but just in case print its stacktrace
e.printStackTrace();
}
}
return Optional.empty();
}
输出:
black
no name found
no name found
Color
类只有很少几个非静态字段
name | type
----------+---------------
value | int
frgbvalue | float[]
fvalue | float[]
falpha | float
cs | java.awt.color.ColorSpace
并且这些字段都不存储颜色名称。此外,它没有任何方法可以检查您使用的颜色是否等于其预定义颜色之一,并存储在静态引用中,如
public final static Color black = new Color(0, 0, 0);
public final static Color BLACK = black;
但是,没有什么可以阻止您实现自己的方法,它可以为您实现。这种方法看起来像
public static Optional<String> colorName(Color c) {
for (Field f : Color.class.getDeclaredFields()) {
//we want to test only fields of type Color
if (f.getType().equals(Color.class))
try {
if (f.get(null).equals(c))
return Optional.of(f.getName().toLowerCase());
} catch (IllegalArgumentException | IllegalAccessException e) {
// shouldn't not be thrown, but just in case print its stacktrace
e.printStackTrace();
}
}
return Optional.empty();
}
输出:
black
no name found
no name found
可能对你有帮助可能对你有帮助可能对你有帮助