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;