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

Color.getColor(String, int) - random color

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

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

但它只会产生不同深浅的蓝色。谢谢

使用以下内容:-

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

假设您想要一种不透明的颜色,颜色值需要 24 位宽,其中每种颜色 8 位:红色、绿色、蓝色。

试试这个:

button.setBackground(new Color((int)(Math.random() * 0x1000000)));

你只能得到蓝色阴影,因为你只能用 (int) (Math.random() * 255 + 1) 填充 8 个最低有效位,它控制蓝色强度。您需要能够控制所有 24 位(如果包括透明度,则为 32 位)。

有一个 java.util.Random 对象 rnd:

Random rnd = new Random();

在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()));

勾选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);