2

我试图在java中使用

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

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

但这有效

Color temp = (foo.getbackground());

为什么?

4

6 回答 6

16

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

于 2009-08-28T12:23:21.043 回答
5

检查此链接颜色 (Java 2 Platform SE v1.4.2)

如果您希望此代码正常工作:

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

foo.getBackground() 必须返回一个整数。由于它返回一个对象 Color 你有类型不匹配。

你总是可以这样做:

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

或者:

Color color = foo.getBackground();
Color temp = new Color(color.getRed(), color.getGreen(), color.getBlue(),color.getAlpha());
于 2009-08-28T12:29:58.570 回答
0

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

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

完美运行

于 2009-08-28T12:24:24.540 回答
0

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

于 2009-08-28T12:24:32.947 回答
0

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

于 2009-08-28T12:28:06.400 回答
0

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

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

于 2009-08-28T12:30:24.310 回答