问题描述
|
根据Oracle的站点,Color类具有一个构造函数,该构造函数接受单个表示RGB值的int值。 http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Color.html#Color(int)
RGB颜色实际上是0-255之间的三个不同数字。因此,将它们组合在一起以形成一个int看起来像这样:
White 255,255,255
White 255255255
对?所以我将其传递给构造函数,并获得鲜艳的蓝绿色。我究竟做错了什么?我不明白什么?
解决方法
从将RGB值转换为整数
int rgb = red;
rgb = (rgb << 8) + green;
rgb = (rgb << 8) + blue;
提取值:
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = rgb & 0xFF;
,来自其他构造函数的Javadoc:
使用创建一个sRGB颜色
指定的RGBA组合值
由中的alpha分量组成
位24-31,红色位
16-23,绿色分量(以位为单位)
8-15,蓝色分量(以位为单位)
0-7。如果hasalpha参数是
false,默认值为255。
因此,您只需要使用位操作来构造int。
,Color col=new Color(255,255,255);
Label l1=new Label(\"I got this color\");
//在标签背景中设置颜色
l1.setBackground(col);