首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

新手请问怎么实现这个计算器的键盘响应,

2012-01-02 
新手请教如何实现这个计算器的键盘响应,急啊!importjava.awt.*importjava.awt.event.*importjava.lang.*

新手请教如何实现这个计算器的键盘响应,急啊!
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   '/ '   :{


//x=Double.parseDouble(tf1.getText().trim());
//tf1.setText(str.delete(str.length()-1,str.length()).toString());
str.setLength(0);
y=0d;
z=3;
}   ;break;
case   '= '   :{
                  //   tf1.setText(str.delete(str.length()-1,str.length()).toString());
                    x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
switch(z)
{
case   0   :   tf1.setText( " "+(x+y));break;
case   1   :   tf1.setText( " "+(x-y));break;
case   2   :   tf1.setText( " "+(x*y));break;
case   3   :   tf1.setText( " "+(x/y));break;
}
tf1.setText(str.delete(str.length()-1,str.length()).toString());
}   ;break;
}
    }

[解决办法]
前几天有人问过类似的问题

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class T
{
public static void main(String[] args)
{
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}

final JTextField tf = new JTextField();
tf.setEnabled(false);

JPanel p = new JPanel(new GridLayout(0, 3, 5, 5));
for (int i = 0; i <= 9; i++) {
final JButton btn = new JButton(String.valueOf(i));
p.add(btn);

btn.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke((char)(i + '0 ')), "PressKeyAction ");
btn.getActionMap().put( "PressKeyAction ", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
btn.doClick();
}
});

btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tf.setText(tf.getText() + btn.getText());
}
});
}

JFrame f = new JFrame();
JComponent contentPane = (JComponent) f.getContentPane();
contentPane.setLayout(new BorderLayout(0, 5));
contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

f.getContentPane().add(p, BorderLayout.CENTER);
f.getContentPane().add(tf, BorderLayout.NORTH);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

热点排行
Bad Request.