如何在Java中生成随机颜色?

时间:2013-07-17 10:08:22

标签: java swing colors jlabel

我想在Java中为JLabel生成一个随机颜色。 JLabel将每100毫秒更改一次背景,背景必须是随机的。怎么做?

我想过使用javax.swing.Timer类来做这件事。看,我很难过。当我尝试label.setBackground(Color.CYAN)

时,我甚至没有得到背景资料
JLabel l=new JLabel("Label");
Timer t=new Timer(2,new ActionListener(){
  public void actionPerformed(ActionEvent ae)
  {
       // what is the code here?
  }
});

2 个答案:

答案 0 :(得分:11)

如果我是,我只会随机化色调分量,而不是亮度,而不是饱和度。

double hue = Math.random();
int rgb = Color.HSBtoRGB(hue,0.5,0.5);
Color color = new Color(rgb);

会更漂亮。

答案 1 :(得分:6)

您可以使用java.util.Random类和构造函数

  

当我尝试过这个时,我甚至没有得到背景资料   label.setBackground(Color.CYAN)

这是因为label不是不透明的。使其不透明以使背景可见。

final JLabel label=new JLabel("Label");
        // Label must be opaque to display
        // the background
        label.setOpaque(true);

        final Random r=new Random();
        Timer t=new Timer(100,new ActionListener(){
            public void actionPerformed(ActionEvent ae)
            {
                Color c=new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256),r.nextInt(256));
                label.setBackground(c);
            }
        });
        t.start();

您可以使用Color类中的任何构造函数。要生成float值,您可以使用Math.random()r.nextFloat()