Originariamente inviato da floyd
un modo per ottenere un Color da una stringa è usare la reflection
codice:
Field f = Class.forName("java.awt.Color").getField("red");
Color red = (Color)f.get(null);
L'idea in sé è valida ... solo che Mitsui voleva una stringa del tipo "Color.red", il che non permette di usare la reflection (a meno di spezzare la stringa e togliere il "Color.").
Anzi, volendo usare nomi singoli tipo "red", "silver", ecc... e visto che nella classe Color non ce ne sono tante di costanti, si potrebbe pensare di creare una propria classe di questo tipo:
codice:
import java.awt.*;
import java.lang.reflect.Field;
public class MyColors
{
public static final int red = 0xFF0000;
public static final int silver = 0xC0C0C0;
public static final int navy = 0x000080;
public static Color decode (String name)
{
try
{
Field f = MyColors.class.getField (name);
Integer i = (Integer) f.get (null);
return new Color (i.intValue ());
}
catch (Exception e)
{
return null;
}
}
}
poi basta fare:
Color c = MyColors.decode ("navy");
Che ne dite?? Mi sembra molto carina come idea!