import java.awt.*;
import java.awt.event.*;
public class RGBColor extends WindowAdapter implements TextListener
{
Frame f;
TextField tf1,tf2,tf3;
Panel p2;
public RGBColor()
{
f=new Frame("合成颜色");
f.setSize(500,200);

Panel p1=new Panel();
Panel p2=new Panel();

f.add(p1,"North");
f.add(p2);

p1.add(new Label("Red"));
tf1=new TextField("255",10);
p1.add(tf1);

p1.add(new Label("Green"));
tf2=new TextField("0",10);
p1.add(tf2);

p1.add(new Label("Blue"));
tf3=new TextField("0",10);
p1.add(tf3);

tf1.addTextListener(this);
tf2.addTextListener(this);
tf3.addTextListener(this);

p2.setBackground(new Color(255,0,0));

f.setVisible(true);
f.addWindowListener(this);
}

public void textValueChanged(TextEvent e)
{
int r=(new Integer(tf1.getText())).intValue();

int g=(new Integer(tf2.getText())).intValue();

int b=(new Integer(tf3.getText())).intValue();

if(r>=0&&r<=255&&g>=0&&g<=255&&b>=0&&b<=255)
p2.setBackground(new Color(r,g,b));

}

public void windowClosing(WindowEvent e)
{
System.exit(0);
}

public static void main(String args[])
{
RGBColor r=new RGBColor();

}
}
应该根据输入框即时变颜色,可是总抛出异常,不能时时变色,谢谢了:)


解决方案 »

  1.   

    Panel   p2; 初始化时又 
    Panel   p2=new   Panel(); 改成 p2 = new Panel();就行了不细心的错误...
      

  2.   

    1,把 Panel p2 = new Panel(); 改成 p2 = new Panel();
    2,把
    int r=(new Integer(tf1.getText())).intValue(); 
    int g=(new Integer(tf2.getText())).intValue(); 
    int b=(new Integer(tf3.getText())).intValue();改为:
    int r = 0;
    int g = 0;
    int b = 0;
    try {
        r = (new Integer(tf1.getText())).intValue();
        g = (new Integer(tf2.getText())).intValue();
        b = (new Integer(tf3.getText())).intValue();
    }catch(Exception ex){
        System.out.println("出错啦~~");
    }
    防止输入非法字符