首先,您不会像这样对颜色使用进行硬编码:
g.setColor(colors.ORANGE);
g.fillOval(160, 70, 50, 50);
由于这阻止了所有更改颜色状态的能力.而是使用一个类字段来保存所用的颜色,然后将其命名为椭圆颜色:
private Color ovalColor = SOME_DEFAULT_COLOR; // some starting color
然后使用该颜色进行绘制:
g.setColor(ovalColor);
g.fillOval(160, 70, 50, 50);
然后,我为班级提供一个Color或ArrayList< Color>数组.和一个int索引字段:
private static final Color[] COLORS = {Color.black, Color.blue, Color.red,
Color.orange, Color.cyan};
private int index = 0;
private Color ovalColor = COLORS[index]; // one way to set starting value
然后,在Swing Timer的ActionListener中,我将增加索引,然后通过数组或ArrayList的大小对其进行调制,然后获取由索引指示的Color并调用repaint();.
index++;
index %= COLORS.length;
ovalColor = COLORS[index];
repaint();