在Java中将字符串转换为颜色

时间:2010-05-18 01:23:31

标签: java colors

在.NET中,您可以实现以下目标:

Color yellowColor = Color.FromName("yellow");

有没有办法在Java中执行此操作而无需借助反射?

PS:我不是要求其他方式存储/加载颜色。我只是想知道在哪里可以做到这一点。

4 个答案:

答案 0 :(得分:27)

使用反射来访问Color类的静态成员。

Color color;
try {
    Field field = Class.forName("java.awt.Color").getField("yellow");
    color = (Color)field.get(null);
} catch (Exception e) {
    color = null; // Not defined
}

答案 1 :(得分:1)

我尝试过类似的东西并且它起作用(至少对于JavaFX而言)

String color = "red";
Color c = Color.web(color);
gc.setFill(color);
gc.fillOval(10, 10, 50, 40);

答案 2 :(得分:1)

我开源了一个名为AWT Color Factory的小图书馆,该图书馆提供了从字符串表示形式创建java.awt.Color实例的方法。

这些方法与javafx.scene.paint.Color中可用的静态方法相对应,例如Color.web(...)或Color.valueOf(...)

该库非常轻巧,不依赖JavaFX。

答案 3 :(得分:0)

为什么不为此制作自定义课程?我这样做了,它对我有用。 注意:您必须在您的包中包含此类。

import java.awt.Color;

/**
 * A class to get the Color value from a string color name
 */
public class MyColor {
    private Color color;

 public MyColor(){
    color = Color.WHITE;
    }
/**
 * Get the color from a string name
 * 
 * @param col name of the color
 * @return White if no color is given, otherwise the Color object
 */
static Color getColor(String col) {
    switch (col.toLowerCase()) {
    case "black":
        color = Color.BLACK;
        break;
    case "blue":
        color = Color.BLUE;
        break;
    case "cyan":
        color = Color.CYAN;
        break;
    case "darkgray":
        color = Color.DARK_GRAY;
        break;
    case "gray":
        color = Color.GRAY;
        break;
    case "green":
        color = Color.GREEN;
        break;

    case "yellow":
        color = Color.YELLOW;
        break;
    case "lightgray":
        color = Color.LIGHT_GRAY;
        break;
    case "magneta":
        color = Color.MAGENTA;
        break;
    case "orange":
        color = Color.ORANGE;
        break;
    case "pink":
        color = Color.PINK;
        break;
    case "red":
        color = Color.RED;
        break;
    case "white":
        color = Color.WHITE;
        break;
        }
    return color;
    }
}

在某些Container我只是这样称呼它

public JPanel createStatusBar(){
    JPanel statusBar = new JPanel(layoutManager);
    statusBar.setBackgroundColr(MyColor.color("green"));
    // and other properties
    return statusBar;

希望这会有所帮助。

相关问题