定时换色标签

时间:2014-12-15 15:31:04

标签: java swing timer label

我有三个标签,每隔一个标签就像一台老虎机一样停下来,我把一个随机颜色显示在标签上,加上每个标签上显示随机颜色,这个代码我得到了相同的颜色每个标签上的颜色,所以我需要时间的帮助,并在每个标签上放置一个随机颜色这里是我的代码:

Color[] color = new Color[6];
Random rand = new Random();
int colorNumber;

final void setColor(int nc) {
    colorNumber = nc;
    w1.setBackground(color[colorNumber]); // label
    w2.setBackground(color[colorNumber]); // label
    w3.setBackground(color[colorNumber]); // label
}

void changeColor() {
    color[0] = Color.RED;
    color[1] = Color.GREEN;
    color[2] = Color.BLUE;
    color[3] = Color.YELLOW;
    color[4] = Color.BLACK;
    color[5] = Color.ORANGE;

    int nc;
    do {
        nc = rand.nextInt(color.length);
    } while (nc == colorNumber);
    setColor(nc);
}

这是按钮

private void spinBtnActionPerformed(java.awt.event.ActionEvent evt) {                                        
    w1.setOpaque(true);
    w2.setOpaque(true);
    w3.setOpaque(true);

    Timer timer;
    timer = new Timer(100, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent ae) {
            changeColor();
        }
    });
    timer.start();
}

1 个答案:

答案 0 :(得分:2)

使用此代码我可以在每个标签上获得相同的颜色

是的,因为您为所有标签设置了相同的颜色:

w1.setBackground(color[colorNumber]); // label
w2.setBackground(color[colorNumber]); // label
w3.setBackground(color[colorNumber]); // label

我需要时间方面的帮助,并在每个标签上放置一个随机颜色

您只需为每个标签设置不同的颜色即可。例如,通过进行这些更改:

Color color = new Color[6] {
    Color.RED,
    Color.GREEN,
    Color.BLUE,
    Color.YELLOW,
    Color.BLACK,
    Color.ORANGE
}; // Initialize this array just once

Random rand = new Random();

final void setColor(int nc, JLabel label) {
    label.setBackground(color[nc]);
}

void changeColor() {
   // Generate a new random int for each label
   setColor(rand.nextInt(color.length), w1);
   setColor(rand.nextInt(color.length), w2);
   setColor(rand.nextInt(color.length), w3);
}