我想在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?
}
});
答案 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()