编了个applet,其中定义了一个TextField,程序中有调用该TextField内容的方法getText()。
通过appletviewer察看,一切正常!
但通过IE浏览器查看时,始终无法通过textField.getText()方法获取文本内容,总得到空值,以至控制台中总报出被0除的异常,为什么?AddAverage.java内容如下:
/*
习题9.7(1):编写有两个文本区的小应用程序。当我们在一个文本区中输入若干个数时,另一个文本区同时对你输入的数进行求和运算并求出平均值,也就是说随着你输入的变化,另一个文本区不断地更新求和及平均值。
*/import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;public class AddAverage extends JApplet
{ private JLabel inputLabel,outputLabel;
private TextField inputField,outputField;
private float add,average;

public AddAverage()
{ Container container=getContentPane();
container.setLayout(new FlowLayout());
inputLabel=new JLabel("请输入参加运算的整数:");
inputField=new TextField(50);
outputLabel=new JLabel("运算后的结果显示如下:");
outputField=new TextField(50);
outputField.setEditable(false);
container.add(inputLabel); 
container.add(inputField);
container.add(outputLabel);
container.add(outputField);
inputField.addTextListener(
new TextListener()
{ public void textValueChanged(TextEvent event)
{ add=getAdd(inputField.getText());
average=getAverage(inputField.getText());
outputField.setText("the Add Value is: "+add
+"     the Average Value is: "+average);
}
});
}

public float getAdd(String str)
{ System.out.println(str);
StringTokenizer tokens=new StringTokenizer(str," ",false);
float a=0f;
String s;
while(tokens.hasMoreTokens())
{ s=tokens.nextToken();
try
{ a+=Integer.parseInt(s);
}
catch(NumberFormatException e)
{ JOptionPane.showMessageDialog(null,"您输入的必须是数字。\n请重新输入!","错误",JOptionPane.ERROR_MESSAGE);
a=0f;
break;
}
}
return a;
} public float getAverage(String str)
{ StringTokenizer tokens=new StringTokenizer(str," ",false);
float a=0f,ave=0f;
int length;
String s;
length=tokens.countTokens();
while(tokens.hasMoreTokens())
{ s=tokens.nextToken();
try
{ a+=Integer.parseInt(s);
}
catch(NumberFormatException e)
{ break;
}
}
return ave=a/length;
}
}AddAverage.html内容如下:
<html>
<applet code="AddAverage.class" width="500" height="110">
</applet>
</html>java控制台中报出的异常如下:
java.lang.ArithmeticException: / by zero
        at AddAverage.getAverage(AddAverageTest.java:73)
        at AddAverage$1.textValueChanged(AddAverageTest.java:32)
        at java.awt.TextComponent.processTextEvent(TextComponent.java:652)
        at java.awt.TextComponent.processEvent(TextComponent.java:621)
        at java.awt.TextField.processEvent(TextField.java:544)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)