Java Color.getColor(字符串名称)不工作
我正在尝试使用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
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);