Зачем вообще использовать переключатель? Скорее просто пусть enum хранит информацию о цвете (инкапсулирует ее) и тем самым выполняет всю грязную работу. Преимущество этого заключается в том, что если вы меняете свое перечисление, вам не нужно выполнять рутирование через весь код, который его использует, изменяя все операторы switch. Например:
import java.awt.Color;
public enum MyColor {
RED("Red", Color.red), BLUE("Blue", Color.blue),
YELLOW("Yellow", Color.yellow);
private String text;
private Color color;
private MyColor(String text,Color color) {
this.text = text;
this.color = color;
}
public String getText() {
return text;
}
public Color getColor() {
return color;
}
@Override
public String toString() {
return text;
}
}
и пример того, как это можно использовать, выглядит следующим образом:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
class MyColorTest extends JPanel {
private static final Dimension PREF_SIZE = new Dimension(400, 300);
public MyColorTest() {
for (final MyColor myColor : MyColor.values()) {
add(new JButton(new AbstractAction(myColor.getText()) {
@Override
public void actionPerformed(ActionEvent arg0) {
MyColorTest.this.setBackground(myColor.getColor());
}
}));
}
}
@Override
public Dimension getPreferredSize() {
return PREF_SIZE;
}
private static void createAndShowUI() {
JFrame frame = new JFrame("MyColorTest");
frame.getContentPane().add(new MyColorTest());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}