Color.getColor(String,int) - 随机颜色

时间:2018-05-18 18:28:08

标签: java random colors jbutton setbackground

我试图通过以下方式设置JButton对象的随机颜色:

button.setBackground(Color.getColor(null,(int) (Math.random() * 255 + 1)));

但它只产生不同的蓝色。感谢。

5 个答案:

答案 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();

答案 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);