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

JAVA(计算器)响应键盘消息
各位大虾,请帮忙看看,下面程序是一个非常简单的计算器,它的计算数字只有1和2,只有加法运算!该计算器可以响应JPanel上的点击,那在该程序基础上怎样可以响应键盘上的消息呢?
比如说键盘输入:1+2     .
非常感谢!

程序代码如下:
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;

//计算器显示结果窗体
class   Result   extends   JPanel
{
JTextField   text   =   new   JTextField();
Result()
{
text.setHorizontalAlignment(SwingConstants.RIGHT);
setLayout(new   BorderLayout());     //设定布局管理器边框布局
add(text,BorderLayout.CENTER);     //TEXT   放置在窗体中间
}
}

//计算器按钮定义面板
class   Number_Key   extends   JPanel
{
JButton   one     =new   JButton( "1 ");
JButton   two     =new   JButton( "2 ");
JButton   plus   =new   JButton( "+ ");
JButton   equal=new   JButton( "= ");

Number_Key()    
{
setLayout(new   GridLayout(1,2,10,10));     //定义布局管理器为网格布局
add(one);
add(two);
add(plus);
add(equal);
}
}

public   class   Calculator   extends   JFrame   implements   ActionListener
{
Result   result   =new   Result();     //   定义text   面板
Number_Key   number_key=new   Number_Key();   //定义按钮面板
boolean   com=false;   //当单击按钮+,-,*,/时,com=true
int   i=0;     //当i=0时说明是第一次输入,字符串sum不会累加
String   sum= " ";     //存放text   内容
double   total=0;   //存放单击按钮+之前的数值
    int   symbol=0;     //     +,-,*,/   的代号分别为1,2,3,4
    Calculator()
    {
    super( "Calculator ");   //设定标题
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //关闭窗体是推出程序
    JPanel   pane=new   JPanel();     //定义面板
    pane.setLayout(new   BorderLayout());
    pane.add(result,BorderLayout.NORTH);
    pane.add(number_key,BorderLayout.SOUTH);
    number_key.one.addActionListener(this);       //对1按钮添加监听事件
    number_key.two.addActionListener(this);       //对2按钮添加监听事件
    number_key.equal.addActionListener(this);   //对=按钮添加监听事件
    number_key.plus.addActionListener(this);     //对+按钮添加监听事件
    setContentPane(pane);
    pack();   //初始化窗口大小为正好盛放所有按钮
    }
   
    //各个按钮触发事件
    public   void   actionPerformed(ActionEvent   e)
    {
    //////   按下1是响应
    if(e.getSource()==number_key.one)
    {
    if(com||0==i)
    {
    result.text.setText( "1 ");
    com=false;
    i=1;
    }
    else
    {
    sum=result.text.getText();
    result.text.setText(sum+ "1 ");
    }
    }
   
    else   if(e.getSource()==number_key.two)
    {
    if(com||0==i)
    {
    result.text.setText( "2 ");
    com=false;
    i=1;