一个简单GUI程序,要求在一个text field输入13种标准颜色之一,然后画相应颜色的图形。例如输入的颜色 String clr = jtfcolor.getText(), 发现 setColor(Color.clr) 报错,找不到变量。而使用Color newColor = new Color(clr) 没有这样的构造函数。真是不知道该怎么使用这个输入的字符串,希望高手给个提示

解决方案 »

  1.   

    我也是新手,不知道说的对不对,我的想法:
    首先这样是一定不行的setColor(Color.clr)
    Color.后面只能跟它方法和它的常量,当然错误
    newColor = new Color(clr) 没有这样的构造函数,因为Color类不提供string参数的构造方法。
    解决:
    String S = jtfcolor.getText().trim();
    然后对s进行判断,比如s=blue,那么setColor(Color.blue);
      

  2.   

    其他如果Color类中没有的常量,用Color(int r,int g,int b)构造方法,用rgb颜色标准去构造颜色对象,然后再setcolor
    楼主一定没看过java的doc,
      

  3.   

    用Color(int r,int g,int b)构造方法
    用rgb颜色标准去构造颜色对象,
    然后再setcolor
      

  4.   

    我没说清楚吗? Color(int r, int g, intb) 构造方法我当然知道。现在的问题是在文本框中输入13种标准颜色之一(得到字符串),你难道要我去反查13种颜色的RGB?就算这样,很可能也要13个if去setcolor。我是想问有没有什么方法直接带字符串到setcolor中。谢谢!
      

  5.   

    你是说,人家输入“RED”你要得到Color.RED??!!要么用反射我建议你还是用下拉菜单,里面每个item都是用这些颜色做背景import java.awt.*;
    import java.lang.reflect.*;public class Test {
    public static void main(String[] args) {
    try {
    String strColor = "RED";
    Field field = Color.class.getField(strColor.toUpperCase());
    Color color = (Color) field.get(null);
    System.out.println(color);
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }
      

  6.   

    如果输入的是如red这样的字符串那只能通过反射或者通过字符串比较.
    如果输入的是字符串是int型的.可以把String转换成int.用Color(int, int, int)来构造.