【问题标题】:Why can't I create a Color in Java with "new" keyword?为什么我不能用“new”关键字在 Java 中创建颜色?
【发布时间】:2010-11-23 17:13:19
【问题描述】:

我试图在 java 中使用

制作新颜色
Color temp = new Color(foo.getBackground());

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

但是这行得通

Color temp = (foo.getbackground());

为什么?

【问题讨论】:

    标签: java colors constructor awt


    【解决方案1】:

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

    【讨论】:

    • 如果你想复制 foo 的颜色,你可以这样做:Color tmp = new Color(foo.getBackground().getRGB());
    • 虽然没有多大意义,因为 Color 实例是不可变的。
    • 确实,我怀疑kokokok真的只是想说Color temp = foo.getBackground();
    【解决方案2】:

    查看此链接Color (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());
    

    【讨论】:

      【解决方案3】:

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

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

      完美运行

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多