童鞋们,是不是有使用计算器的时候,还要进入运行,输入calc,太麻烦了,有时候甚至还忘记单词怎么拼写,呵呵
程序员自己写代码实现,又简单,又方便啊

以下为代码(想要生成可执行工具可参考:http://www.cnblogs.com/holdon521/p/4483966.html

package com;

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.GridLayout;

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;

import javax.swing.SwingConstants;

import javax.swing.UIManager;

import javax.swing.border.EmptyBorder;

public class Test  extends JFrame{

/**

   *  humphrey

   */

  private static final long serialVersionUID = -9075562467166618473L;

  private JPanel contentPane;

  private JTextField display;

  private ActionListener insert = new InsertAction();

  private ActionListener command = new CommandAction();

  private double result = 0;

  private String lastCommand = "=";

  private boolean start = true;

  /**

   * Launch the application.

   */

  public static void main(String[] args) {

      try {

          UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

      } catch (Throwable e) {

          e.printStackTrace();

      }

      EventQueue.invokeLater(new Runnable() {

          public void run() {

              try {

                  Test frame = new Test();

                  frame.setVisible(true);

              } catch (Exception e) {

                  e.printStackTrace();

              }

          }

      });

  }

  /**

   * Create the frame.

   */

  public Test() {

      setTitle("\u8BA1\u7B97\u5668");

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      setLocationByPlatform(true);

      contentPane = new JPanel();

      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

      contentPane.setLayout(new BorderLayout(0, 0));

      setContentPane(contentPane);

      JPanel displayPanel = new JPanel();

      contentPane.add(displayPanel, BorderLayout.NORTH);

      display = new JTextField();

      display.setText("0");

      display.setHorizontalAlignment(SwingConstants.RIGHT);

      display.setEditable(false);

      display.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      displayPanel.add(display);

      display.setColumns(13);

      JPanel buttonPanel = new JPanel();

      contentPane.add(buttonPanel, BorderLayout.CENTER);

      buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));

      JButton number7Button = new JButton("7");

      number7Button.addActionListener(insert);

      number7Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number7Button);

      JButton number8Button = new JButton("8");

      number8Button.addActionListener(insert);

      number8Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number8Button);

      JButton number9Button = new JButton("9");

      number9Button.addActionListener(insert);

      number9Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number9Button);

      JButton divideButton = new JButton("/");

      divideButton.addActionListener(command);

      divideButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(divideButton);

      JButton number4Button = new JButton("4");

      number4Button.addActionListener(insert);

      number4Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number4Button);

      JButton number5Button = new JButton("5");

      number5Button.addActionListener(insert);

      number5Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number5Button);

      JButton number6Button = new JButton("6");

      number6Button.addActionListener(insert);

      number6Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number6Button);

      JButton multiplyButton = new JButton("*");

      multiplyButton.addActionListener(command);

      multiplyButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(multiplyButton);

      JButton number3Button = new JButton("1");

      number3Button.addActionListener(insert);

      number3Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number3Button);

      JButton number2Button = new JButton("2");

      number2Button.addActionListener(insert);

      number2Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number2Button);

      JButton number1Button = new JButton("3");

      number1Button.addActionListener(insert);

      number1Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number1Button);

      JButton subtractButton = new JButton("-");

      subtractButton.addActionListener(command);

      subtractButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(subtractButton);

      JButton number0Button = new JButton("0");

      number0Button.addActionListener(insert);

      number0Button.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(number0Button);

      JButton dotButton = new JButton(".");

      dotButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(dotButton);

      JButton equalButton = new JButton("=");

      equalButton.addActionListener(command);

      equalButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(equalButton);

      JButton addButton = new JButton("+");

      addButton.addActionListener(command);

      addButton.setFont(new Font("微软雅黑", Font.PLAIN, 15));

      buttonPanel.add(addButton);

      pack();

  }

  private class InsertAction implements ActionListener {

      public void actionPerformed(ActionEvent e) {

          String input = e.getActionCommand();

          String text = display.getText();

          if (start) {

              display.setText("");

              start = false;

          }

          if (text.startsWith(".")) {

              display.setText("0" + display.getText() + input);

          } else if (text.startsWith("-0.") || text.startsWith("0.")) {

              display.setText(display.getText() + input);

          } else if (text.startsWith("-0")) {

              display.setText("-" + input);

          } else if (text.startsWith("0")) {

              display.setText(input);

          } else {

              display.setText(display.getText() + input);

          }

      }

  }

  private class CommandAction implements ActionListener {

      public void actionPerformed(ActionEvent e) {

          String command = e.getActionCommand();

          if (start) {

              if (command.equals("-")) {

                  display.setText(command);

                  start = false;

              } else {

                  lastCommand = command;

              }

          } else {

              calculate(Double.parseDouble(display.getText()));

              lastCommand = command;

              start = true;

          }

      }

  }

  public void calculate(double x) {

      char operator = lastCommand.charAt(0);

      switch (operator) {

          case '+':

              result += x;

              break;

          case '-':

              result -= x;

              break;

          case '*':

              result *= x;

              break;

          case '/':

              result /= x;

              break;

          case '=':

              result = x;

              break;

      }

      display.setText("" + result);

  }

}

java实现简单计算器功能的更多相关文章

  1. [Java.web]简单计算器

    项目的  WebRoot 目录下的 calculator.jsp <%@ page language="java" import="java.util.*" ...

  2. Java实现简单计算器、抽票程序

    计算器: import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt. ...

  3. java实现简单计算器

    首先利用字符串数组保存计算器上的按钮的标签名 private final String[] str = {"7","8","9"," ...

  4. Android-Kotlin简单计算器功能

    上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 选择包名,然后右键: 选择Class类型,会有class: 创建CounterCla ...

  5. s12-day04-work01 简单计算器功能实现

    代码: #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo. ...

  6. Python之实现简单计算器功能

    一,需求分析 要求计算一串包含数字+-*/()的类似于3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)表达式的数值 二,知识点 正 ...

  7. 简单计算器 安卓 Android 作业

    Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...

  8. 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...

  9. Java语言编写计算器(简单的计算器)

    Java编写的一个简单计算器,本人还比较菜,只能这样了,有点代码冗余,不能连续计算. import javax.swing.*; import java.awt.*; import java.awt. ...

随机推荐

  1. Java反射机制集中学习

    什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言 ...

  2. java中的集合和视图

    一.集合的概念 何为集合,集合就是相当于一个对象的容器.集合是类似数组的一个作用.既然有了数组,为何还要有集合呢,由于数组对象一旦创建,其大小便不可以更改,我们只能往数组中存放创建时数量的对象.而集合 ...

  3. String变量的两种创建方式

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...

  4. Java设计模式—适配器模式

    适配器模式的个人理解: 首先有一个目标角色.一个源角色还有一个适配器角色.我们要做的就是利用适配器角色将源角色转换为目标角色.而目标角色是一个正在良好运行的一个角色. 转换方法: (1)  适配器类继 ...

  5. Dubbo架构原理

    1 Dubbo核心功能 Remoting:远程通讯,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式. Cluster: 服务框架,提供基于接口方法的透明远程过程调用 ...

  6. C++之不带指针类的设计——Boolean

    经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...

  7. Recsys2018 music recomendation

    http://www.recsyschallenge.com/2018/ January 2018 Release of the "One Million Playlists" d ...

  8. 【MATLAB】十进制字节矩阵与比特流矩阵的互相转化

    for i=1:length(enc_out_data) data_bits_temp=dec2bin(enc_out_data(i),8); databits((i-1)*8+1:i*8)=doub ...

  9. day01-struts框架

    一.框架概述 1.框架的意义与作用: 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 2 ...

  10. pnp4nagios 性能调优

    http://popozhu.github.io/2014/03/12/pnp4nagios%E7%9A%84%E5%B9%B6%E5%8F%91/ rrd目录分层 bulk模式 修改模板 修改/pr ...