日期:2014-05-20  浏览次数:20695 次

一个简单的程序 ,哪位大侠帮忙看看呀!程序贴出了,直接运行就行
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();

}
}


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




------解决方案--------------------
Panel p2; 

初始化时又 
Panel p2=new Panel(); 

改成 p2 = new Panel();就行了

不细心的错误...
------解决方案--------------------
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("出错啦~~");
}
防止输入非法字符