Java 如何将字符串转换为常量类int值?

Java 如何将字符串转换为常量类int值?,java,android,swing,android-widget,Java,Android,Swing,Android Widget,我有一个变量: String colorName = "BLUE"; 我想将此颜色设置为android应用程序中的绘画。应该是这样的: paint.setColor ("Color." + colorName); if(yourcolorstring.equals("Blue")){ colorName = Color.BLUE; }else if(yourcolorstring.equals("Black")){ colorName = Color.BLACK; }el

我有一个变量:

String colorName = "BLUE";
我想将此颜色设置为android应用程序中的绘画。应该是这样的:

paint.setColor ("Color." + colorName);
if(yourcolorstring.equals("Blue")){
     colorName = Color.BLUE;
}else if(yourcolorstring.equals("Black")){
     colorName = Color.BLACK;
}else{
     colorName = Color.WHITE;
}
但是我收到了错误警告,因为setColor()函数的参数应该是int。 有什么想法吗?谢谢

您需要执行以下操作:

paint.setColor(Color.BLUE);
试试这个:

protected static final int colorName = Color.BLUE;
paint.setColor(colorName);
编辑:正如我所看到的,你得到你的颜色作为一个字符串。 因此,您必须检查它是什么颜色,然后设置“colorName”变量。 大概是这样的:

paint.setColor ("Color." + colorName);
if(yourcolorstring.equals("Blue")){
     colorName = Color.BLUE;
}else if(yourcolorstring.equals("Black")){
     colorName = Color.BLACK;
}else{
     colorName = Color.WHITE;
}

至少在标准Java中可以使用:

import javax.swing.text.html.CSS;

String colorName = "fuchsia"; // "maroon", "rgb(1,20,30)", "#ff00aa"
Color color = CSS.stringToColor(colorName);
这是因为HTML支持;您还可以使用

"<html><span style='color:blue'>hello</span>"

也许你想要这个版本

paint.setColor(Color.parseColor(String color) paint.setColor(Color.parseColor(字符串颜色)

如果您有一个很长的颜色列表,并且您不想编写一个很长的
If
..
序列,否则If
语句,您也可以使用一个
映射来进行此操作。关键是带有颜色名称的字符串,该值是您想要查找的
颜色
常量值。例如:

Map<String, Color> colors = new HashMap<String, Color>();
colors.put("BLUE", Color.BLUE);
colors.put("RED", Color.RED);
colors.put("GREEN", Color.GREEN);

// To find the Color constant, look it up in the map:
String text = "BLUE";
Color c = colors.get(text);
if (c != null) {
    paint.setColor(c);
} else {
    System.out.println("Unknown color: " + text);
}
Map colors=newhashmap();
颜色。放置(“蓝色”,颜色。蓝色);
颜色。放置(“红色”,颜色。红色);
颜色。放置(“绿色”,颜色。绿色);
//要查找颜色常量,请在地图中查找:
字符串text=“蓝色”;
Color c=colors.get(文本);
如果(c!=null){
油漆。设置颜色(c);
}否则{
System.out.println(“未知颜色:+文本”);
}

Hi Oskar Kjellin,这是我想要的。但我不知道颜色值,我将其作为字符串变量。我通过extras.getString()接收它来自其他活动的函数。@tatiana_c这是不可能的。您可能必须使用反射或开关Oskar Kjellin,我想我同意您的看法。我将尝试Prexx的解决方案。谢谢。您好Prexx,正如我对Oskar Kjellin的回答,我不知道常量值。我可以从其他活动接收字符串“Color.BLUE”,而不是“BLUE”,但是我能用它做什么呢?嗨,Joop Eggen,它看起来很有趣,谢谢。我现在试过了,但是我收到了错误消息“import javax.swing无法解决”。我使用SDK 6。可能是因为我编写了一个android应用程序。很抱歉,我还没有完成一个android应用程序。我将通过CSS的相关代码。颜色。parseColor是更好的答案。对于Joop Eggen。是的,parseColor较短:-)。但对我来说,阅读和理解它是非常有趣的。谢谢嗨,库马尔·比贝克,这正是我想要的。我无法改变已经被接受的答案,但我想说声谢谢。太好了。嗨,杰斯珀,谢谢你的回答。我并没有这样想,我已经用parseColor()得到了确切的答案,但在我所拥有的其他代码领域中使用它是一个有趣的想法。