Java Color.getColor(字符串名称)不工作

Java Color.getColor(字符串名称)不工作,java,swing,user-interface,Java,Swing,User Interface,我正在尝试使用getColor(字符串名称)函数更改颜色,但它似乎不起作用。可能是我犯了某种错误。代码如下: public class ComboBoxPractice extends JFrame{ private String names={"Color.YELLOW","Color.RED","Color.GREEN"}; public ComboBoxPractice() { ... box.addItemListener( new Ite

我正在尝试使用getColor(字符串名称)函数更改颜色,但它似乎不起作用。可能是我犯了某种错误。代码如下:

public class ComboBoxPractice extends JFrame{

private String names={"Color.YELLOW","Color.RED","Color.GREEN"};

public ComboBoxPractice()
{
    ...

    box.addItemListener(

            new ItemListener()
            {
                public void itemStateChanged(ItemEvent event)
                {
                    if(event.getStateChange()==event.SELECTED)
                    {
                        getContentPane().setBackground(Color.getColor(names[box.getSelectedIndex()]));
                    }
                }
            }
    );
}
}

我还尝试了只包含颜色名称的字符串数组,如黄色、红色、蓝色。但它不起作用

我知道通过创建一个类颜色数组来改变颜色的另一种方法,但我想尝试这种方法

我做错了什么


关于

使用颜色类别作为:

 private Color[] colors ={Color.YELLOW,Color.RED,Color.GREEN};
如果使用
Color
类,则可以将下面的语句更新为:

    getContentPane().setBackground(Color.getColor(names[box.getSelectedIndex()]));
作为

或使用“黑色”、“红色”等名称

如果您决定使用如上所述的颜色名称,则可以使用反射获得
颜色
对象,如下所示:

    Field field = Color.class.getField(names[0]);
    Color color = (Color)field.get(null);

另一种方法是使用反射从字段名中获取
颜色
实例,例如:

Field field = Color.class.getField("YELLOW");
Color c = (Color)field.get(null);
注意颜色字符串如何不包含实际的类名。对于此应用程序,它将如下所示:

Field field = Color.class.getField(names[box.getSelectedIndex()]);
Color backgroundColor = (Color)field.get(null);
Field field = Color.class.getField("YELLOW");
Color c = (Color)field.get(null);
Field field = Color.class.getField(names[box.getSelectedIndex()]);
Color backgroundColor = (Color)field.get(null);