2013-11-01 73 views
0

在此方法中,我创建一个字符串变量,并将其移动到另一个字符串变量。使用像这样的变量:set.color(Color.variable)

private void produceRainbow() { 
     String color = "RED"; 
     produceArc(color); 
    } 

有更多的代码,但它并不重要(实质上,将字符串更改为其他颜色)。

private void produceArc(String color) { 
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(Color.color); 
} 

(忽略的变量leftX,upperY,rightX,洛厄)

这里我要颜色设置为一个字符串:

下一页此方法。 所以我希望它成为arc.setColor(Color.RED)

当我编译,我得到这个错误:

Program.java:89: cannot find symbol 
symbol : variable color 
location: class java.awt.Color 
    arc.setColor(Color.color); 

它甚至有可能做我想做的事?如果是这样,我做错了什么? (如果你很好奇,我为每个弧(红色,蓝色,绿色等等,都有自己的方法)做了一个单独的方法,这个工程,但我想知道如果我可以只使用一种方法需要一个变量,这使得代码更短)

+3

你真的想传递一个字符串吗?你可以马上传递Color.RED。 或者如果你真的想使用一个字符串,你可以使用Color.FromName(string name); – James

+0

如果你真的想要使用一个字符串,你可以使用反射来获得与该字符串匹配的名称的静态字段,或者构建一个将字符串映射到Color实例的映射。但是那些是丑陋和不安全的(就类型/编译检查而言)。我会用@詹姆斯的建议去。 – vanza

+0

@James那么如果我不使用字符串,我该如何更改我的代码? 在第一种方法中,我更改“produceArc(Color.RED);” 并在第二种方法中“ private void produceArc(Color.color){ ... arc.setColor(Color.color); “ 我在这里得到的错误是”“ – Chronicle

回答

0

详细说明我给的评论。

您可以立即传递Color.RED或使用Color.FromName(string name);

建议的方法:

要通过Color.RED你的方法看起来就像这样:

private void produceRainbow() { 
     Color color = Color.RED; 
     produceArc(color); 
    } 

和:

private void produceArc(Color color) { 
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(color); 
} 

方法2

如果由于某种原因,你可以使用FROMNAME方法你会应用它象下面这样:

private void produceRainbow() { 
     String color = "Red"; 
     produceArc(color); 
    } 

和:

private void produceArc(String color) { 
    GOval arc = new GOval(leftX, upperY, rightX, lowerY); 
    arc.setColor(Color.FromName(color)); 
} 

注意,这最后一种方法只工作在C#是不适合Java。 (我不确定你是使用Java还是C#)

相关问题