我试图通过以下方式设置JButton对象的随机颜色:
button.setBackground(Color.getColor(null,(int) (Math.random() * 255 + 1)));
但它只产生不同的蓝色。感谢。
答案 0 :(得分:2)
使用以下内容: -
int red = (int) (Math.random() * 256);
int green = (int) (Math.random() * 256);
int blue = (int) (Math.random() * 256);
button.setBackground(new Color(red, green, blue));
答案 1 :(得分:1)
假设您想要一种不透明的颜色,颜色值需要为24位宽,每种颜色为8位:红色,绿色,蓝色。
试试这个:
button.setBackground(new Color((int)(Math.random() * 0x1000000)));
答案 2 :(得分:0)
你只得到蓝色阴影,因为你只能用(int) (Math.random() * 255 + 1)
填充8个最低有效位,它控制蓝色强度。您需要能够控制所有24位(如果包含透明度,则需要32位)。
使用java.util.Random
对象rnd
:
Random rnd = new Random();
表达color as 3 float
values from 0.0 - 1.0:
new Color(rnd.nextFloat(), rnd.nextFloat(), rnd.nextFloat())
表达color as an int
, with 24 bits affected:
new Color(rnd.nextInt(1<<24));
表达color as 3 int
s 0-255 each, red/green/blue:
new Color(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
答案 3 :(得分:0)
在Java中,当你得到一个带有整数的Color对象时,它会将蓝色存储在0-7位,绿色位8-15,红色位16-23 https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#Color(int)
要进行补偿,请将每个组件添加到此类
中public int GetRandomColorInt()
{
return (Math.random() * Math.pow(2,8)) //blue
+ (Math.random() * Math.pow(2,16)) //green
+ (Math.random() * Math.pow(2,24) ) //red
}
在您设置的后台通话中,
button.setBackground(Color.getColor(null,(int) GetRandomColorInt()));
答案 4 :(得分:0)
检查Color constructor。 通过仅使用0到255之间的数字,您使用各种蓝调。 如果要根据代码和Color构造函数正确使用它,可以使用:
int red = (int) (Math.random() * 255 + 1);
int blue= (int) (Math.random() * 255 + 1);
int green = (int) (Math.random() * 255 + 1);
button.setBackground(Color.getColor(null, red * blue * green));
顺便说一句,您可以使用其他Color构造函数,例如:
Color color = new Color(red, green, blue));
button.setBackground(color);