我想创建一个可以创建动态颜色网格的Java程序。比方说我想制作10个网格,那么颜色网格将间隔很宽。 它是30,那么它将是紧密间隔的。这是一张图片:http://i.stack.imgur.com/D2yba.png
每个网格都应该负责制作一个活动。 哦,是的,会有一系列的颜色。类似10 t0 100的东西。
我首先尝试使用随机功能。我们知道rgb的颜色范围是0到255.所以我试着做一些随机颜色,但是一种颜色可以再来,然后它会弄乱我的整个事情。我想要一些独特的颜色网格,没有重复。其实我想要的东西与图像完全一样。
任何人都可以帮助我!
答案 0 :(得分:0)
您可以从查看JColorChooser
开始,如How to Use Color Choosers中所述。一种生成光谱系列颜色的简单方法是使用HSB模型;选择0到315范围内的色调,恒定饱和度和亮度。你的问题对于事件并不是很具体,但是当鼠标在每种颜色上移动时,这里显示的信息是example。
答案 1 :(得分:0)
如何操纵颜色以制作可爱的彩虹的一个例子。
public class RainBowColorGenerator
{
private static final int NR255 = 255;
private static final int YELLOW_TRESHOLD = 200;
private int r;
private int g;
private int b;
public RainBowColorGenerator()
{
this(0, NR255, 0);
}
/**
* Extra constructor so you can start with your own color in stead of the default green.
* @param red the red component
* @param green the green component
* @param blue the blue component
* @see java.awt.Color
*/
public RainBowColorGenerator(int red, int green, int blue)
{
this.r = red;
this.g = green;
this.b = blue;
}
/**
* Makes the next Color.
* @return a Color
*/
public Color nextColor()
{
nextRGB();
return makeColor();
}
/**
* Makes the next Color with a bigger change then the unparametrized nextColor method.
* @param jump the number of steps that should be taken, use 256 if you only want the primary colors.
* @return a Color , yes indeed a color.
*/
public Color nextColor( int jump )
{
for (int i = 0; i < jump; i++)
{
nextRGB();
}
return makeColor();
}
/**
* Makes the next Color with a bigger change then the unparametrized nextColor method.
* @param jump the number of steps that should be taken, use 256 if you only want the primary colors.
* @return a Color , that will be never be really close to yellow.
*/
public Color nextNonYellowColor( int jump )
{
Color color = nextColor(jump);
while ( color.getRed() > YELLOW_TRESHOLD && color.getGreen() > YELLOW_TRESHOLD )
{
color = nextColor(jump);
}
return color;
}
private void nextRGB()
{
if ( r == NR255 && g < NR255 && b == 0 )
{
g++;
}
if ( g == NR255 && r > 0 && b == 0 )
{
r--;
}
if ( g == NR255 && b < NR255 && r == 0 )
{
b++;
}
if ( b == NR255 && g > 0 && r == 0 )
{
g--;
}
if ( b == NR255 && r < NR255 && g == 0 )
{
r++;
}
if ( r == NR255 && b > 0 && g == 0 )
{
b--;
}
}
private Color makeColor()
{
return new Color(r, g, b);
}
public static void main( String[] args )
{
final RainBowColorGenerator bow = new RainBowColorGenerator();
JFrame frame = new JFrame(RainBowColorGenerator.class.toString());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel mainpanel = new JPanel()
{
@Override
public void paint( Graphics g )
{
super.paint(g);
int w = getWidth();
int h = getHeight();
for (int i = 0; i< w; i++)
{
g.setColor(bow.nextColor(2));
g.drawLine(i,0,i,h);
}
}
};
frame.getContentPane().add(mainpanel);
//noinspection MagicNumber
frame.setSize(800, 800);
frame.setVisible(true);
}
}
答案 2 :(得分:0)
其实我想要一些完全一样的东西 图像。
该图像不显示随机颜色。它显示了颜色的不同“色调”。由于你有30种颜色,它基本上每12度(360度圆圈)显示不同的颜色。这些颜色更容易用非RGB颜色方案表示。
查看HSL Color示例,了解轻松完成此操作的方法。