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();
表示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));
在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);
我试图通过以下方式设置 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();
表示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));
在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);