您的位置:首页 > 其它

计算器功能简单实现

2009-03-28 23:37 369 查看
package Day18;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class CalculatorB implements ActionListener {
private JFrame frame;
private JTextField field;
private JButton clear;
private JButton[] allButtons;
private double number1 = 0.0, number2 = 0.0;
private char operator='0';
public CalculatorB() {
frame = new JFrame("Calculator");
frame.setLayout(new BorderLayout());// 布局管理器设置
field = new JTextField(30);
field.setText("0");
clear = new JButton("C");
allButtons = new JButton[16];
init();
addEventHandler();
}
private void init() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(field);
panel.add(clear);
frame.add(panel, "North");
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(4, 4));
String str = "123+456-789*0.=/";
for (int i = 0; i < allButtons.length; i++) {// ///////////////////////添加按钮
allButtons[i] = new JButton(str.charAt(i) + "");
panel1.add(allButtons[i]);
}
frame.add(panel1);
}
private void addEventHandler() {
for (int i = 0; i < allButtons.length; i++) {
allButtons[i].addActionListener(this);
}
clear.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand().trim();// 取按键的文本命令
if ("012345689.".indexOf(str) != -1) {
// ///
if (field.getText().trim().equals("0")) {
field.setText("");
}
if (field.getText().contains(".") && str.equals(".")) {
return;
}
field.setText(field.getText() + str);
return;
}
if ("+-*/".indexOf(str) != -1) {
// ///
if (str.indexOf(operator) != -1) {
field.setText("0");
return;
}
number1 = Double.parseDouble(field.getText());
field.setText("0");
operator = str.charAt(0);
return;
}
if (str.equals("=")) {
// //
number2 = Double.parseDouble(field.getText());
double result = 0.0;
switch (operator) {
case '+':
result = number1 + number2;
break;
case '-':
result = number1 - number2;
break;
case '*':
result = number1 * number2;
break;
case '/':
result = number1 / number2;
break;
default:
break;
}
long temp=new Double(result).longValue();
if(temp==result){
field.setText(temp + "");
}else {
field.setText(result + "");
}

operator='0';
return;
}
if (str.equals("C")) {
// //
number1 = 0;
number2 = 0;
operator = '0';
field.setText("0");
return;
}
}
public void showMe() {
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new CalculatorB().showMe();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: