在Java中创build随机颜色?

我想在Java应用程序的JPanel上绘制随机的彩色点。 有什么方法来创build随机颜色?

使用随机库:

import java.util.Random; 

然后创build一个随机生成器:

 Random rand = new Random(); 

由于颜色分为红绿蓝两种颜色,因此可以通过创build随机原色来创build新的随机颜色:

 // Java 'Color' class takes 3 floats, from 0 to 1. float r = rand.nextFloat(); float g = rand.nextFloat(); float b = rand.nextFloat(); 

然后为了最终创build颜色,将原色传递给构造函数:

 Color randomColor = new Color(r, g, b); 

你也可以使用这种方法创build不同的随机效果,例如创build随机颜色,更偏重于某些颜色…传递较less的绿色和蓝色,以产生“粉红色”的随机颜色。

 // Will produce a random colour with more red in it (usually "pink-ish") float r = rand.nextFloat(); float g = rand.nextFloat() / 2f; float b = rand.nextFloat() / 2f; 

或者为了确保只生成“浅色”颜色,可以生成每个颜色元素总是大于0.5的颜色:

 // Will produce only bright / light colours: float r = rand.nextFloat() / 2f + 0.5; float g = rand.nextFloat() / 2f + 0.5; float b = rand.nextFloat() / 2f + 0.5; 

Color类还可以使用其他各种颜色function,例如使颜色更亮:

 randomColor.brighter(); 

Color类的概述可以在这里阅读: http : //download.oracle.com/javase/6/docs/api/java/awt/Color.html

随机RGB值的单线:

 new Color((int)(Math.random() * 0x1000000)) 

如果你想让喜欢,柔和的色彩,最好使用HLS系统。

 final float hue = random.nextFloat(); // Saturation between 0.1 and 0.3 final float saturation = (random.nextInt(2000) + 1000) / 10000f; final float luminance = 0.9f; final Color color = Color.getHSBColor(hue, saturation, luminance); 

复制粘贴这个为明亮的柔和的彩虹颜色

 int R = (int)(Math.random()*256); int G = (int)(Math.random()*256); int B= (int)(Math.random()*256); Color color = new Color(R, G, B); //random color, but can be bright or dull //to get rainbow, pastel colors Random random = new Random(); final float hue = random.nextFloat(); final float saturation = 0.9f;//1.0 for brilliant, 0.0 for dull final float luminance = 1.0f; //1.0 for brighter, 0.0 for black color = Color.getHSBColor(hue, saturation, luminance); 

如果你不希望它看起来很可怕,我会build议在一个数组中定义一个颜色列表,然后使用随机数生成器来select一个。

如果你想要一个真正的随机颜色,你可以从0到255生成3个随机数,然后使用Color(int,int,int)构造函数创build一个新的Color实例。

 Random randomGenerator = new Random(); int red = randomGenerator.nextInt(256); int green = randomGenerator.nextInt(256); int blue = randomGenerator.nextInt(256); Color randomColour = new Color(red,green,blue); 

我知道这个答案有点晚了,但是我还没有看到有人把这个答案。

像Greg说的那样,你想使用Random类

 Random rand = new Random(); 

但是我要说的区别很简单,就是这样做:

 Color color = new Color(rand.nextInt(0xFFFFFF)); 

就这么简单! 不需要生成大量不同的花车。

 import android.graphics.Color; import java.util.Random; public class ColorDiagram { // Member variables (properties about the object) public String[] mColors = { "#39add1", // light blue "#3079ab", // dark blue "#c25975", // mauve "#e15258", // red "#f9845b", // orange "#838cc7", // lavender "#7d669e", // purple "#53bbb4", // aqua "#51b46d", // green "#e0ab18", // mustard "#637a91", // dark gray "#f092b0", // pink "#b7c0c7" // light gray }; // Method (abilities: things the object can do) public int getColor() { String color = ""; // Randomly select a fact Random randomGenerator = new Random(); // Construct a new Random number generator int randomNumber = randomGenerator.nextInt(mColors.length); color = mColors[randomNumber]; int colorAsInt = Color.parseColor(color); return colorAsInt; } } 

您可以使用三个浮动(r,g,b)实例化一个颜色,每个颜色介于0.0和1.0之间: http : //download.oracle.com/javase/6/docs/api/java/awt/Color.html#Color(浮动,%20浮动,%20浮动 )。

使用Java的Random类,你可以很容易地实例化一个新的随机颜色:

 Random r = new Random(); Color randomColor = new Color(r.nextFloat(), r.nextFloat(), r.nextFloat()); 

我不能保证他们会很漂亮,但他们会随机=)

当然。 只需使用随机RGB值生成一个颜色即可。 喜欢:

 public Color randomColor() { Random random=new Random(); // Probably really put this somewhere where it gets executed only once int red=random.nextInt(256); int green=random.nextInt(256); int blue=random.nextInt(256); return new Color(red, green, blue); } 

如果你不喜欢它的颜色,你可能想要改变随机数的生成。 我猜这些将会相当黑暗。

你似乎想要随机的颜色。 不清楚你的意思是什么光。 但是如果你想要随机的“彩虹色”,试试这个

 Random r = new Random(); Color c = Color.getHSBColor(r.nextFloat(),//random hue, color 1.0,//full saturation, 1.0 for 'colorful' colors, 0.0 for grey 1.0 //1.0 for bright, 0.0 for black ); 

searchHSB颜色模型以获取更多信息。

 package com.adil.util; /** * The Class RandomColor. * * @author Adil OUIDAD * @URL : http://kizana.fr */ public class RandomColor { /** * Gets the random color. * * @return the random color */ public static String getRandomColor() { String[] letters = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; String color = "#"; for (int i = 0; i < 6; i++ ) { color += letters[(int) Math.round(Math.random() * 15)]; } return color; } } 

这是获取随机颜色的方法:

 private static Random sRandom; public static synchronized int randomColor() { if (sRandom == null) { sRandom = new Random(); } return 0xff000000 + 256 * 256 * sRandom.nextInt(256) + 256 * sRandom.nextInt(256) + sRandom.nextInt(256); } 

优点:

  • 获取可用于java.awt.Colorandroid.graphics.Color的整数表示forms
  • 保持对Random的静态引用。

这将是有益的。

 Random randomGenerator = new Random(); int red = randomGenerator.nextInt(255); int green = randomGenerator.nextInt(255); int blue = randomGenerator.nextInt(255); Color randomColour = new Color(red,green,blue);