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

新手请教如何实现这个计算器的键盘响应,急啊!
import   java.awt.*;
import   java.awt.event.*;
import   java.lang.*;
import   javax.swing.*;


public   class   Counter   extends   Frame   implements   KeyListener
{
GridLayout   gl1,gl2,gl3;             //声明三个面板的布局
Panel   p0,p1,p2,p3;
Result   result   =new   Result();     //   定义text   面板
JTextField   tf1;
TextField   tf2;
Button   b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer   str;                       //显示屏所显示的字符串
String   s;
double   x=0.0,y=0.0;//resule=0.0;                                 //x和y都是运算数,result为运算结果
int   z;                                             //Z表示单击了的运算符,0表示 "+ ",1表示 "- ",2表示 "* ",3表示 "/ "
static   double   m;                         //记忆的数字


public   void   keyPressed(KeyEvent   e){}             //键盘响应
    public   void   keyReleased(KeyEvent   e){}
    public   void   keyTyped(KeyEvent   e)
    {
      char   c=e.getKeyChar();
switch(c)
{
case   '0 '   :   ;
case   '1 '   :   ;
case   '2 '   :   ;
case   '3 '   :   ;
case   '4 '   :   ;
case   '5 '   :   ;
case   '6 '   :   ;
case   '7 '   :   ;
case   '8 '   :   ;
case   '9 '   :{
if(tf1.getText().trim().equals( "0 "))//如果显示屏显示的为零不做操作
{
tf1.setText( " ");
}
y=Double.parseDouble(tf1.getText().trim());
};;break;
case   '+ '   :{
//y=Double.parseDouble(tf1.getText().trim());
//tf1.setText(str.delete(str.length()-1,str.length()).toString());
tf1.setText( " ");
str.setLength(0);                             //清空缓冲区以便接收新的另一个运算数
y=0d;
z=0;
tf1.setText(str.delete(str.length()-1,str.length()).toString());
}   break;
case   '- '   :{
//x=Double.parseDouble(tf1.getText().trim());
                                //tf1.setText(str.delete(str.length()-1,str.length()).toString());
str.setLength(0);
y=0d;
z=1;
}   ;   break;
case   '* '   :{
//x=Double.parseDouble(tf1.getText().trim());
// tf1.setText(str.delete(str.length()-1,str.length()).toString());
str.setLength(0);
y=0d;
z=2;
}   ;break;
case   '/ '   :{