我有一个程序,当通过其构造函数创建其对象时,我想在其中设置JPanel的颜色。现在这就是我所拥有的。

但是,这显然效率很低。我想知道是否可以通过某种方式将字符串参数直接传递到setBackground()方法中以设置颜色?

MyPanel(String bcolor) {
        super();
        if (bcolor.equals("red"))
            setBackground(Color.RED);
        if (bcolor.equals("blue"))
            setBackground(Color.BLUE);
        if (bcolor.equals("green"))
            setBackground(Color.GREEN);
        if (bcolor.equals("white"))
            setBackground(Color.WHITE);
        if (bcolor.equals("black"))
            setBackground(Color.BLACK);

    }

最佳答案

最简单的方法是将构造函数中想要的颜色的RGB值传递给它。

MyPanel(int r, int g, int b){
    super();
    setBackground(new Color(r,g,b));
}


如果确实要使用字符串,则可以执行此操作

String colorName; //note that this has to be exact spelling and capitalization of the fields in the Color class.
Field field = Class.forName("java.awt.Color").getField(colorName);
setBackground((Color) field.get(null));

09-27 22:56