Java 实现setNextColor()函数
我想以某种方式调用程序的函数Java 实现setNextColor()函数,java,colors,Java,Colors,我想以某种方式调用程序的函数setnextclour()(java.awt.Color),这样每次我调用它时,都会分配一种新的颜色,但我不确定如何执行此操作 可能是一个列出颜色顺序的枚举,每次我调用它时,我都会得到枚举中的下一种颜色?您可以这样做: public enum Color { BLUE, GREEN, RED, YELLOW; public Color next() { return Color.values()[ (this
setnextclour()代码>(java.awt.Color),这样每次我调用它时,都会分配一种新的颜色,但我不确定如何执行此操作
可能是一个列出颜色顺序的枚举,每次我调用它时,我都会得到枚举中的下一种颜色?您可以这样做:
public enum Color {
BLUE,
GREEN,
RED,
YELLOW;
public Color next() {
return Color.values()[ (this.ordinal() + 1) % Color.values().length ];
}
}
使用Color#next()
将遍历所有Color
s,并最终返回到开头,此时它将到达最后一个
例如:
public static void main(String[] args) {
Color currentColor = Color.BLUE;
for(;;) {
System.out.println(currentColor);
currentColor = currentColor.next();
}
}
。。。将输出:
BLUE
GREEN
RED
YELLOW
BLUE
GREEN
RED
YELLOW
BLUE
GREEN
RED
...
如果您想将它与实际的java.awt.Color
s接口,我建议您只需对其进行如下增强:
public enum ColourSet {
BLUE(Color.BLUE),
GREEN(Color.GREEN),
RED(Color.RED),
YELLOW(Color.YELLOW);
private final java.awt.Color color;
private ColourSet(java.awt.Color color) {
this.color = color;
}
public ColourSet next() {
return ColourSet.values()[ (this.ordinal() + 1) % ColourSet.values().length];
}
public java.awt.Color getColor() {
return color;
}
public static void main(String[] args) {
ColourSet current = ColourSet.BLUE;
for(;;) {
System.out.println(current.getColor());
current = current.next();
}
}
}
同样,该代码现在将输出:
java.awt.Color[r=0,g=0,b=255]
java.awt.Color[r=0,g=255,b=0]
java.awt.Color[r=255,g=0,b=0]
java.awt.Color[r=255,g=255,b=0]
java.awt.Color[r=0,g=0,b=255]
java.awt.Color[r=0,g=255,b=0]
java.awt.Color[r=255,g=0,b=0]
java.awt.Color[r=255,g=255,b=0]
java.awt.Color[r=0,g=0,b=255]
java.awt.Color[r=0,g=255,b=0]
java.awt.Color[r=255,g=0,b=0]
...
在下面的代码中,函数getNextColor()
将在每次调用时随机返回新颜色
public class Test extends JApplet{
Random rdm = new Random();
JButton change = new JButton("Click Me");
@Override
public void init(){
setSize(300, 300);
add(change, BorderLayout.CENTER);
change.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
change.setBackground(getNextColor());
}
});
}
private Color getNextColor(){
return new Color(rdm.nextInt(255), rdm.nextInt(255), rdm.nextInt(255));
}
}
你想要什么颜色?你可以使用一个列表
或一个数组,甚至一个队列。没有什么特别的红、蓝、绿、黄。你需要随机生成颜色吗??