图形计算器

package com.tutu.demo;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TestCalculator1 extends JFrame implements ActionListener {
private JTextField outputField = new JTextField();
private JButton button;
private double result;
private double storagespace = 0;
private String lastCommand = "";
private String[] buttonName = { "MC","MR","MS","M+","M-",
"<-", "CE","C","±", "√",
"7", "8", "9", "/", "%",
"4", "5", "6", "*", "1/x",
"1", "2", "3", "-", "=" ,
"0",".","+",};
private JMenuBar bar;
private JMenu menu_file, menu_help,menu_edit;
private JMenuItem item_log,item_exit,item_paste,item_copy,edit_item_log,item_logcopy,item_logedit,item_logunedit,item_logclear,item_about;

public static void main(String[] args) {
new TestCalculator1();
}

class MenuListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();

if(cmd.equals("退出")){
System.exit(0);
}

if(cmd.equals("历史记录")){
System.out.println("历史记录");
historyLog();
}

if(cmd.equals("关于计算器")){
System.out.println("关于计算器");
}

}
}

ActionListener menuListener = new MenuListener(); //aaaaaaaaaaaaaa

public void historyLog(){
if(lastCommand.equals("=")){

}
}

public TestCalculator1() {
this.setTitle("计算器");
this.setLocationRelativeTo(null); //居中显示
this.setSize(300,350);
this.add(getNorth(), BorderLayout.NORTH);
this.add(getCenter(), BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initMenu();
this.setVisible(true);
}

public void initMenu(){
bar = new JMenuBar(); //创建菜单条
menu_file = new JMenu("查看"); //创建菜单
menu_edit = new JMenu("编辑");
menu_help = new JMenu("帮助");
item_log = new JMenuItem("历史记录"); //创建菜单项
item_log.addActionListener(menuListener); //aaaaaaaaaaaaaaaaaa
item_exit = new JMenuItem("退出");

item_exit.addActionListener(menuListener); //aaaaaaaaaaaaaaaaaa

item_copy = new JMenuItem("复制");
item_paste = new JMenuItem("粘贴");
edit_item_log = new JMenu("历史记录");
item_logcopy = new JMenuItem("复制历史记录");
item_logedit = new JMenuItem("编辑");
item_logunedit = new JMenuItem("取消编辑");
item_logclear = new JMenuItem("清除");
item_about = new JMenuItem("关于计算器");
item_about.addActionListener(menuListener); //aaaaaaaaaaaaaaaaaa

bar.add(menu_file); //将菜单加入到菜单栏中
bar.add(menu_edit);
bar.add(menu_help);
menu_file.add(item_log); //将菜单项加入到菜单里
menu_file.addSeparator();
menu_file.add(item_exit);
menu_edit.add(item_copy);
menu_edit.add(item_paste);
menu_edit.addSeparator();
menu_edit.add(edit_item_log);
edit_item_log.add(item_logcopy);
edit_item_log.add(item_logedit);
edit_item_log.add(item_logunedit);
edit_item_log.add(item_logclear);
menu_help.add(item_about);
this.setJMenuBar(bar); //将菜单条加入窗体
}

public JPanel getNorth() {
JPanel jpanel = new JPanel(new GridLayout());
jpanel.add(outputField);
return jpanel;
}

public JPanel getCenter() {
JButton jbutton = new JButton();
JPanel jpanel = new JPanel(new GridLayout(0, 5));
for (int i= 0; i<buttonName.length; i++){
jpanel.add(button = new JButton(buttonName[i]));
button.addActionListener(this);
}
return jpanel;


public void actionPerformed(ActionEvent e) // 监听按键
{
String command = e.getActionCommand();
if (command.equals("C")) {
outputField.setText("");
this.result = 0;
} else if (command.equals("CE")){
outputField.setText("0");
}else if (command.equals("MR")){
this.calculator(command);
} else if (command.equals("MC")){
this.calculator(command);
} else if (command.equals("MS")){
this.calculator(command);
} else if (command.equals("M+")){
this.calculator(command);
} else if (command.equals("M-")){
this.calculator(command);
} else if (command.equals("<-")) {
this.calculator(command);
} else if (command.equals("%")) {
this.calculator(command);
} else if (command.equals("/")) {
this.calculator(command);
} else if (command.equals("+")) {
this.calculator(command);
} else if (command.equals("-")) {
this.calculator(command);
} else if (command.equals("*")) {
this.calculator(command);
} else if (command.equals("=")) {
this.calculator(command);
} else {
outputField.setText(outputField.getText() + command);
}
// System.out.println("llllllllll");
}

public void calculator(String currentCommand) {
try {
if (! lastCommand.equals("")) {
switch (lastCommand) {
case "+":
if (!outputField.getText().equals("")) {
result += Double.parseDouble(outputField.getText());
}
break;
case "-":
if (!outputField.getText().equals("")) {
result -= Double.parseDouble(outputField.getText());
}
break;
case "*":
if (!outputField.getText().equals("")) {
result *= Double.parseDouble(outputField.getText());
}
break;
case "/":
if (!outputField.getText().equals("")) {
if (!outputField.getText().equals("0")) {
result /= Double.parseDouble(outputField.getText());
} else {
lastCommand = "=";
outputField.setText("除数不能为零");
throw new Exception("除数不能为零");
}
}
break;
default:
if (!outputField.getText().equals("")) {
result = Double.parseDouble(outputField.getText());
}
break;
}
} else {
if (outputField.getText().equals("")) {
result = 0;
} else {
result = Double.parseDouble(outputField.getText());
}
}

if ((! currentCommand.equals("<-")) && (! currentCommand.equals("MR"))) {
this.lastCommand = currentCommand;
}

if(! currentCommand.equals("")){
switch (currentCommand) {
case "MR": //从存储空间中拿数据到输入框中;
outputField.setText(storagespace + "");
break;
case "MC": //清除存储空间的数字
this.storagespace = 0;
break;
case "MS": //把输入框中的数字,保存到存储空间里。
storagespace = Double.parseDouble(outputField.getText()); 
outputField.setText("");
System.out.print(storagespace);
break;
case "M+": //从存储内加上
storagespace += Double.parseDouble(outputField.getText());
break;
case "M-": //从存储内减去
storagespace -= Double.parseDouble(outputField.getText()); 
break;
case "=":
outputField.setText(result + "");
break;
case "%":
if (!outputField.getText().equals("")) {
result = (Double.parseDouble(outputField.getText()) / 100);
outputField.setText(result + "");
}
break;
case "<-":
if (!outputField.getText().equals("")) {
outputField.setText(outputField.getText().substring(0,
outputField.getText().length() - 1));
if (!outputField.getText().equals("")) {
result = Double.parseDouble(outputField.getText());
}
}
break;
default:
outputField.setText("");
break;
}
}
} catch (Exception e) {
//e.printStackTrace();
}
}
}

posted @ 2018-05-27 09:37  vickytjh  阅读(249)  评论(0)    收藏  举报