Pourquoi ne pas faire une classe personnalisée pour cela? Je l'ai fait et ça marche pour moi. NB: Vous devrez inclure cette classe dans votre package.
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;
}
}
Dans certains Container
je viens d'appeler comme ça
public JPanel createStatusBar(){
JPanel statusBar = new JPanel(layoutManager);
statusBar.setBackgroundColr(MyColor.color("green"));
// and other properties
return statusBar;
Hope this helps.
C'est une réflexion et c'est la seule solution à laquelle je peux penser. Toute autre manière nécessiterait de créer une carte de couleurs. –
C'est une réflexion mais c'est la bienvenue. Cela semble être la seule façon de le faire ... Je me demande pourquoi tout en Java doit être si compliqué. –
@devoured elysium: Après avoir utilisé le ruby pendant un certain temps, je n'aime pas java parce que vous devez réinventer la roue plusieurs fois. Vous pouvez utiliser groovy, il vous permet d'accéder aux champs par le nom. –