您的位置:首页 > 编程语言 > Java开发

java实现计算器

2016-03-14 14:51 387 查看
package jg_4;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
* @author ZhangLong
* 网格布局
*/
@SuppressWarnings("serial")
public class Calculator extends JFrame {
//声明一个文本栏控件,用于显示计算结果
private JTextField txtResult;
private JPanel p;
//定义一个字符串数组,将计算器中按钮的文字都放在该数组中
private String name[] = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/"};
//声明一个按钮数组,该数组的长度以字符串的长度为准
private JButton button[] = new JButton[name.length];
//定义一个存放计算结果的变量,初始为0
private double result = 0;
//存放最后一个操作符
private String lastCommand = "=";
//标识是否开始
private boolean start = true;

public Calculator() { //构造方法
super("计算器");
txtResult = new JTextField(20); //实例化文本栏控件
txtResult.setFocusable(false); //------设置文本框不是焦点状态------------------------------------------------------
this.add(txtResult, BorderLayout.NORTH); //将文本栏控件放置在窗体框架的上方
p = new JPanel(new GridLayout(4,4)); //实例化面板对象,同时设置此面板布局为4行4列的网格布局

//创建监听对象
ButtonListener bl = new ButtonListener();
KeyListener kl = new KeyListener();

for (int i=0; i<button.length; i++) { //循环实例化按钮对象数组
button[i] = new JButton(name[i]);
p.add(button[i]);
//注册监听到每一个按钮
button[i].addActionListener(bl);
button[i].addKeyListener(kl);
}
this.add(p, BorderLayout.CENTER);
this.setSize(200, 150);
this.setLocation(500, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

/*
* 计算
*/
public void calculate(double x) {
if (lastCommand.equals("+"))
result += x;
else if (lastCommand.equals("-"))
result -= x;
else if (lastCommand.equals("/"))
result /= x;
else if (lastCommand.equals("*"))
result *= x;
else if (lastCommand.equals("="))
result = x;
//将结果显示到文本框中
txtResult.setText("" + result);
}

/*
* 主方法主方法
*/
public static void main(String[] args) {
new Calculator();
}

/*
* 按钮监听类
*/
private class ButtonListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
String input = e.getActionCommand(); //返回点击的按钮
System.out.println(input);
//单击操作符号按钮
if (input.equals("+") || input.equals("-") || input.equals("*") || input.equals("/") || input.equals("=")) {
if (start) { //start 代表应该输入一个数(包括负号-)
if (input.equals("-")) {
txtResult.setText(input);
start = false;
} else
lastCommand = input;
} else {
calculate(Double.parseDouble(txtResult.getText()));
lastCommand = input;
start = true;
}
} else {
if (start) {
txtResult.setText("");
start = false;
}
txtResult.setText(txtResult.getText() + input);
}
}
}

/*
* 键盘按键监听类
*/
private class KeyListener extends KeyAdapter {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java se eclipse 布局