Dlaczego nie uczynić niestandardowej klasy do tego? Zrobiłem to i działa dla mnie. UWAGA: Będziesz musiał dołączyć tę klasę do swojego pakietu.
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;
}
}
W niektórych Container
Właśnie nazwać jak ten
public JPanel createStatusBar(){
JPanel statusBar = new JPanel(layoutManager);
statusBar.setBackgroundColr(MyColor.color("green"));
// and other properties
return statusBar;
nadzieję, że to pomaga.
Jest to odbicie i jest to jedyne rozwiązanie, jakie mogę wymyślić. Każdy inny sposób wymagałby stworzenia mapy kolorów. –
To jest refleksja, ale jest to mile widziane. Wydaje się, że jest to jedyny sposób, aby to zrobić ... Zastanawiam się, dlaczego wszystko w Javie musi być tak skomplikowane ... –
@Evououred elysium: Po użyciu ruby przez jakiś czas, nie lubię java, ponieważ trzeba odkrywać na nowo koło wiele razy. Możesz użyć groovy, umożliwia dostęp do pól po nazwie. –