import java.awt.*;
import java.awt.event.*;public class jsj
{
public static TextField ss,s1,s2;
public static void main(String[] arge)
{
ss=new TextField(30);
s1=new TextField(30);
s2=new TextField(30);
Button s3=new Button("=");
Label s4=new Label("+");
Frame s5=new Frame("肖富国第一个完整程序");
s5.setLayout(new FlowLayout());
s5.add(ss);
s5.add(s4);
s5.add(s1);
s5.add(s3);
s5.add(s2);
s3.addActionListener(new M());
s5.pack();
s5.setVisible(true);
}
}
class M implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
String sb=jsj.ss.getText();
String sc=jsj.s1.getText();
int mc=Integer.parseInt(sb);
int ms=Integer.parseInt(sc);
int md=mc+ms;


Integer it = new Integer(md);
String sf=it.toString();

jsj.s2.setText(sf);
}

}

最后那个md变量必须得转换String类型才能在文本框显示? 谁能不能告诉我的原理!!

解决方案 »

  1.   

    因为java的TextField类的setText方法原型是 void setText(String t) 你也可以写一个你自己的setText,继承原生的setText,并overload+overwrite setText方法,使其支持Integer类型的输出
      

  2.   

    因为你的md是Integer类型,Integer是int的类的形式。也就是说md实际上是一个实例化的类。jsj.s2.setText(sf) setText()的参数必须是String. 所以要调用Integer类的ToString()方法。楼上正解