如何将字符串用作变量?

时间:2015-08-24 15:30:12

标签: java string variables colors

情况如下:我有一个程序需要使用语句

动态分配颜色
mb.setForeground(Color.????);

哪里????通常是红色或绿色或你有什么。但是,由于我直到运行时才知道要进入该值的是什么,我需要使用字符串传递该信息:

String fColorTxt = "????";

因此,fColorTxt所赋予的值是我想在Color之后结束的值。

我现在已经完成了以下工作,但我不知道它是否会起作用......

public enum ColorChoice {
    BLACK   (  0,   0,   0),
    BLUE    (  0,   0, 255), LIGHT_BLUE    (  0, 128, 255), DARK_BLUE    (  0,   0, 128),
    BROWN   (160,  96,   0), LIGHT_BROWN   (208, 144,   0), DARK_BROWN   ( 96,  32,   0),
    CYAN    (  0, 255, 255), LIGHT_CYAN    (176, 255, 255), DARK_CYAN    (  0, 139, 139),
    GRAY    (128, 128, 128), LIGHT_GRAY    (211, 211, 211), DARK_GRAY    ( 64,  64,  64),
    GREY    (128, 128, 128), LIGHT_GREY    (211, 211, 211), DARK_GREY    ( 64,  64,  64),
    GREEN   (  0, 255,   0), LIGHT_GREEN   (128, 255, 128), DARK_GREEN   (  0, 128,   0),
    MAGENTA (255,   0, 255), LIGHT_MAGENTA (255, 144, 255), DARK_MAGENTA (144,   0, 144),
    MINT    ( 96, 221,  96), LIGHT_MINT    (208, 238, 208), DARK_MINT    ( 16, 187,  16),
    ORANGE  (255, 128,   0), LIGHT_ORANGE  (255, 176,  48), DARK_ORANGE  (192,  64,   0),
    PINK    (255, 192, 203), LIGHT_PINK    (255, 128, 255), DARK_PINK    (231,  84, 128),
    YELLOW  (255, 255,   0), LIGHT_YELLOW  (255, 255, 128), DARK_YELLOW  (160, 160,   0),
    WHITE   (255, 255, 255);

    private int iRed;
    private int iGreen;
    private int iBlue;

    ColorChoice(int iRed, int iGreen, int iBlue) {
        this.iRed   = iRed;
        this.iGreen = iGreen;
        this.iBlue  = iBlue;
    }

}

我想我需要弄清楚如何做一些事情。我最终希望能够像这样调用一个函数:

 sColor = myFunction(fColorTxt);
 mb.setForeground(sColor);
 sColor = myFunction(bColorTxt);
 mb.setBackground(sColor);

其中bColorTxt和fColorTxt是在运行时使用变量动态设置的,而sColor是Color类型。

(下面可能仍然如此,但显然我已将这些名字写入我的枚举,因此不再需要):

(仅在某些情况下。我想使用8个java的原始预定义颜色,然后我定义了另外20个左右的我自己,我将不得不弄清楚如何处理它们;例如:

Color myDarkYellow   = new Color (160, 160,   0);

然后

if (fColorTxt == "DARK_YELLOW") { fColor = myDarkYellow; }
mb.setForeground(fColor);

这看起来是正确还是有更好的方法来处理它?)

1 个答案:

答案 0 :(得分:1)

也许你可以使用Enum来避免其他28个