java swing里面都是 new Color(1f, 0f, 0f, 1f);new Color(255,0,255);有没有像#FFA500的颜色可以使用 

解决方案 »

  1.   

    api里有下面两个支持整数,不过要你自己把十六进制转成int型再传进去,第二个Color构造方法支持透明度
    Integer.parseInt(String s, int radix) 
              使用第二个参数指定的基数,将字符串参数解析为有符号的整数。Color
    public Color(int rgb)创建具有指定组合的 RGB 值的不透明的 sRGB 颜色,此 sRGB 值的 16-23 位表示红色分量,8-15 位表示绿色分量,0-7 位表示蓝色分量。绘制时实际使用的颜色取决于从给出的可用于特定输出设备的颜色空间中找到的最匹配颜色。alpha 值的默认值为 255。 参数:
    rgb - 组合的 RGB 分量Color
    public Color(int rgba,
                 boolean hasalpha)创建具有指定组合的 RGBA 值的 sRGB 颜色,此 RGBA 值的 24-31 位表示 alpha 分量,16-23 位表示红色分量,8-15 位表示绿色分量,0-7 位表示蓝色分量。如果 hasalpha 参数为 false,则 alpha 值为默认值 255。 参数:
    rgba - 组合的 RGBA 分量
    hasalpha - 如果 alpha 的位有效,则该参数为 true;否则为 false下面这个是
      

  2.   

    Color的这个静态方法可以直接传字符串,你的字符串去掉前导#号就行,因为支持十六进制,十进制和八进制
    public static Color decode(String nm)
                        throws NumberFormatException将 String 转换成整数,并返回指定的不透明 Color。此方法处理用来表示八进制和十六进制数字的字符串格式。 参数:
    nm - 将某种不透明颜色表示为 24 位整数的 String 
    返回:
    新的 Color 对象。 
    抛出: 
    NumberFormatException - 如果不能将指定的字符串解释为十进制、八进制或十六进制的整数。
      

  3.   


    new Color(Integer.decode("#FFA500"));
      

  4.   

    可以的。java也支持其他颜色的表示方法
      

  5.   

    竟然不用去掉前导#
            String s = "#FFA500";
            System.out.println(Color.decode(s));run:
    java.awt.Color[r=255,g=165,b=0]
    成功生成(总时间:1 秒)
      

  6.   

    new Color(int);
    如果是#FFA500,转换为十进制为16753920。
    则new Color(16753920)。就可以了。