为什么我不能用“new”关键字在Java中创建Color?

时间:2009-08-28 12:20:24

标签: java colors constructor awt

我试图使用

在java中创建一种新颜色
Color temp = new Color(foo.getBackground());

它一直告诉我找不到符号。

但这有效

Color temp = (foo.getbackground());

为什么?

6 个答案:

答案 0 :(得分:15)

那是因为foo.getBackground()返回一个Color实例,并且没有Color构造函数将Color实例作为参数。

答案 1 :(得分:5)

点击此链接Color (Java 2 Platform SE v1.4.2)

如果您希望此代码有效:

Color temp = new Color(foo.getBackground());

foo.getBackground()必须返回一个整数。由于它返回一个对象颜色,因此您的类型不匹配。

你总是可以这样做:

Color temp = new Color(foo.getbackground().getRGB());

或:

Color color = foo.getBackground();
Color temp = new Color(color.getRed(), color.getGreen(), color.getBlue(),color.getAlpha());

答案 2 :(得分:0)

是的,你可以做到,问题是foo.getBackground可能不会返回一个整数或类似的东西。

Color c = new Color(23,32,43)

完美运作

答案 3 :(得分:0)

没有Color的构造函数只需要一个Color。在第二个实例中,您将分配从函数返回的变量。

答案 4 :(得分:0)

Color类没有构造函数将Color的其他实例作为参数,这就是foo.getBackground()返回的内容。 IIRC,Java中的Color类是不可变的 - 因此提供一个可以创建现有Color对象副本的构造函数毫无意义。

答案 5 :(得分:0)

显然foo.getBackground()返回的类型是“Color”类型。

虽然您可以将Color分配给Color类型的变量temp,但至少在java.awt.Color中没有构造函数可以从另一个Color创建Color。