import java.awt.*; import java.awt.event.*; import java.text.DecimalFormat; import javax.swing.*; public class Calculator implements ActionListener { JFrame frame; JPanel panel, panel1, panel2, panel3; JMenuBar mainMenu; JMenu mcalculator, mhelp; JMenuItem miquit, miabout; JTextField textAnswer; JButton btnBksp, btnCE, btnClr, btnAddSub, btnAdd, btnSub, btnMul, btnDiv, btnEqu, btnDot; JButton button[]; //key 当前运算 //prekey 前一次运算 short key = -1; short prekey = -1; double answer,vard; boolean clickable = true; DecimalFormat df; public Calculator() { df = new DecimalFormat("0.##########"); //*******************布局*************************** // name frame = new JFrame("Calculor"); // panel panel = new JPanel(); frame.getContentPane().add(panel); panel.setLayout(new BorderLayout(10, 10)); // mainMenu mainMenu = new JMenuBar(); mcalculator = new JMenu("calculator"); mhelp = new JMenu("help"); mainMenu.add(mcalculator); mainMenu.add(mhelp); miquit = new JMenuItem("quit"); miabout = new JMenuItem("about"); mcalculator.add(miquit); mhelp.add(miabout); frame.setJMenuBar(mainMenu); // panel.add(mainMenu, BorderLayout.NORTH); // textField textAnswer = new JTextField(15); panel.add(textAnswer, BorderLayout.NORTH); // panel1 btnBksp = new JButton("Bksp"); btnCE = new JButton("CE"); btnClr = new JButton("Clr"); btnAddSub = new JButton("+/-"); btnAdd = new JButton("+"); btnSub = new JButton("-"); btnMul = new JButton("*"); btnDiv = new JButton("/"); btnEqu = new JButton("="); btnDot = new JButton("."); button = new JButton[10]; for (int i = 0; i <= 9; ++i) { button[i] = new JButton("" + i); } panel1 = new JPanel(); panel1.setLayout(new GridLayout(5, 4, 10, 10)); panel1.add(btnBksp); panel1.add(btnCE); panel1.add(btnClr); panel1.add(btnAddSub); for (int i = 7; i <= 9; ++i) { panel1.add(button[i]); } panel1.add(btnDiv); for (int i = 4; i <= 6; ++i) { panel1.add(button[i]); } panel1.add(btnMul); for (int i = 1; i <= 3; ++i) { panel1.add(button[i]); } panel1.add(btnSub); panel1.add(button[0]); panel1.add(btnDot); panel1.add(btnEqu); panel1.add(btnAdd); panel.add(panel1, BorderLayout.SOUTH); // JPanel tmp1 = new JPanel(); // JPanel tmp2 = new JPanel(); // panel.add(tmp1,BorderLayout.EAST); // panel.add(tmp2,BorderLayout.WEST); // show in the center // ***********************监听********************** btnBksp.addActionListener(this); btnCE.addActionListener(this); btnClr.addActionListener(this); btnAddSub.addActionListener(this); btnDot.addActionListener(this); btnAdd.addActionListener(this); btnSub.addActionListener(this); btnMul.addActionListener(this); btnDiv.addActionListener(this); btnEqu.addActionListener(this); for(int i=0; i<=9; ++i) { button[i].addActionListener(this); } //********************显示**************************************** Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation((scrSize.width - frame.getSize().width) / 2, (scrSize.height - frame.getSize().height) / 2); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setResizable(false); frame.setVisible(true); } //*************************事件处理************************************ @Override public void actionPerformed(ActionEvent ae) { Object tmp = ae.getSource(); try { for(int i=0; i<=9; ++i) { if(tmp == button[i] && true == clickable) { textAnswer.setText(textAnswer.getText() + Integer.toString(i)); } } //小数点按钮,如果还没有小数点就加点 if(tmp == btnDot && true == clickable) { boolean isDot = false; if(0 == textAnswer.getText().length()) isDot = true; for(int i=0; i<textAnswer.getText().length(); ++i) { if('.' == textAnswer.getText().charAt(i)) { isDot = true; break; } } if(false == isDot && true == clickable) { textAnswer.setText(textAnswer.getText() + "."); } } if((tmp == btnAdd || tmp == btnSub || tmp == btnMul || tmp == btnDiv) && true == clickable) { //根据前一种运算确定 answer值 if(tmp == btnAdd) { switch (prekey){ case 0: answer += Double.parseDouble(textAnswer.getText()); break; case 1: answer -= Double.parseDouble(textAnswer.getText()); break; case 2: answer *= Double.parseDouble(textAnswer.getText()); break; case 3: if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= Double.parseDouble(textAnswer.getText()); break; default: answer = Double.parseDouble(textAnswer.getText()); } textAnswer.setText(""); prekey = key = 0; } if(tmp == btnSub) { switch (prekey){ case 0: answer += Double.parseDouble(textAnswer.getText()); break; case 1: answer -= Double.parseDouble(textAnswer.getText()); break; case 2: answer *= Double.parseDouble(textAnswer.getText()); break; case 3: if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= Double.parseDouble(textAnswer.getText()); break; default: answer = Double.parseDouble(textAnswer.getText()); } textAnswer.setText(""); prekey = key = 1; } if(tmp == btnMul) { switch (prekey){ case 0: answer += Double.parseDouble(textAnswer.getText()); break; case 1: answer -= Double.parseDouble(textAnswer.getText()); break; case 2: answer *= Double.parseDouble(textAnswer.getText()); break; case 3: if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= Double.parseDouble(textAnswer.getText()); break; default: answer = Double.parseDouble(textAnswer.getText()); } textAnswer.setText(""); prekey = key = 2; } if(tmp == btnDiv) { switch (prekey){ case 0: answer += Double.parseDouble(textAnswer.getText()); break; case 1: answer -= Double.parseDouble(textAnswer.getText()); break; case 2: answer *= Double.parseDouble(textAnswer.getText()); break; case 3: if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= Double.parseDouble(textAnswer.getText()); break; default: answer = Double.parseDouble(textAnswer.getText()); } textAnswer.setText(""); prekey = key = 3; } } if(tmp == btnEqu && true == clickable) { //连续按等号,则作连续运算 if(5 == prekey) { if(0== key) { answer += vard; textAnswer.setText(df.format(answer)); } if(1== key) { answer -= vard; textAnswer.setText(df.format(answer)); } if(2== key) { answer *= vard; textAnswer.setText(df.format(answer)); } if(3== key) { if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= vard; textAnswer.setText(df.format(answer)); } } else { vard = Double.parseDouble(textAnswer.getText()); switch (prekey){ case 0: answer += Double.parseDouble(textAnswer.getText()); break; case 1: answer -= Double.parseDouble(textAnswer.getText()); break; case 2: answer *= Double.parseDouble(textAnswer.getText()); break; case 3: if(0 ==Double.parseDouble(textAnswer.getText())) { textAnswer.setText("Error:Div by zero!"); clickable = false; } else answer /= Double.parseDouble(textAnswer.getText()); break; default: answer = Double.parseDouble(textAnswer.getText()); } //把答案贴出来 textAnswer.setText(df.format(answer)); } prekey = 5; } if (tmp == btnBksp && true == clickable) { String s = textAnswer.getText(); textAnswer.setText(""); for (int i = 0; i < s.length() - 1; ++i) { char a = s.charAt(i); textAnswer.setText(textAnswer.getText() + a); } } //当前窗口清0 if (tmp == btnCE) { textAnswer.setText(""); clickable = true; } //Clr键要把所有都清0 if (tmp == btnClr) { answer = 0; vard = 0; textAnswer.setText(""); clickable = true; } if (tmp == btnAddSub && true == clickable) { boolean isNumber = true; String s = textAnswer.getText(); for (int i = 0; i < s.length(); ++i) { if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9' || '.' == s.charAt(i) || '-' == s.charAt(i))) { isNumber = false; break; } } if (true == isNumber) { if ('-' == s.charAt(0)) { textAnswer.setText(""); for (int i = 1; i < s.length(); ++i) { char a = s.charAt(i); textAnswer.setText(textAnswer.getText() + a); } } else { textAnswer.setText('-' + s); } } } } catch (Exception e) { textAnswer.setText("Error!"); clickable = false; } } public static void main(String[] args) { new Calculator(); } }
您还没有登录,请您登录后再发表评论
《Calculator-master:构建高效计算器应用》 在计算机领域,计算器软件是不可或缺的工具,尤其对于程序员和数学爱好者来说。本文将深入探讨一个名为"Calculator-master_calculator_"的项目,它是一个基本的Windows...
标题"calculator_C-C++_calculator_"表明我们将探讨一个用C或C++编写的计算器程序。描述中的"function calculator from calculator"暗示我们将专注于计算器程序中的函数实现。 C++相比C语言,提供了类和对象的概念...
《关于Cadence ADEL中的计算器Calculator的使用手册》 Cadence Design Systems, Inc. 是一家在电子设计自动化(EDA)领域具有领先地位的公司,其产品广泛应用于集成电路(IC)和系统级设计。在5.1.41版本的Waveform...
在本文中,我们将对"calculator-master_calculator_"项目进行详尽的探讨,揭示其中蕴含的编程思想和技术栈。 首先,让我们关注"calculator-master"这一命名,它表明我们正在研究的是计算器项目的主分支或主版本。这...
- **多态**:多态性允许我们使用同一个接口处理不同类型的对象,比如可以设计一个抽象的`Calculator`类,然后有多个具体的`SimpleCalculator`和`ScientificCalculator`类实现它。 3. **控制流程**: - **循环**:...
标题中的"DRAM-Calculator-for-Ryzen-1.7.0_RamCal_"指的是一个专为AMD Ryzen处理器设计的DRAM(动态随机存取内存)计算工具的版本号1.7.0,通常这类工具被称为"RAM Calculator"或者"RamCal",正如描述中提到的。...
"Calculator-master.zip"文件所包含的项目,显然是一款计算器应用的源代码库,这为我们提供了一个深入理解计算器App开发的绝佳机会。本文将从设计、功能实现、编程语言、用户界面等方面,对计算器App的开发进行详细...
《AllTrans EGM2008 Calculator:一款高效的学习工具》 在当今信息化时代,学习软件已经成为提升个人技能、拓宽知识领域的重要辅助工具。本文将详细介绍一款名为AllTrans EGM2008 Calculator的免费学习软件,它专为...
【Android Robotium测试详解:创建Calculator测试用例】 在Android应用开发中,自动化测试是确保产品质量和稳定性的重要环节。Robotium是一款强大的自动化测试框架,专为Android应用设计,支持UI层的黑盒和白盒测试...
Geographic Calculator(po-jie)是由Blue Marble公司推出的一款专业坐标转换工具,兼容32位和64位操作系统,软件主要用于各类地理空间数据的处理、转换和查看等操作,软件拥有直观化的用户界面和强大的功能,可以满足...
在这个场景中,`Calculator` 类是一个实现了四则混合运算的封装类,它能够进行加法、减法、乘法和除法操作。下面将详细介绍这个类可能的设计方式以及如何使用它。 首先,`Calculator` 类通常会包含私有(private)...
Calculator,作为一个功能强大的计算工具,不仅提供了基础的数学运算,如加、减、乘、除,还囊括了更复杂的计算功能,满足用户在不同场景下的需求。它可能包括但不限于科学计算、统计分析、工程计算等高级功能。...
Graphing calculator plus 84 graph emulator free 83 详情 功能齐全的科学图形计算器84 plus为学生提供了许多有用的功能: –图形计算器83 ti plus支持图形绘制,绘制许多功能(例如参数,极坐标和函数 )的图形–...
在实际应用中,EGM96calculator.m脚本通常会先读取EGM96.txt文件获取模型系数,然后对用户指定的地理位置进行重力异常和大地水准面起伏的计算。这些计算可能涉及到球谐函数的解算、坐标转换和数值积分等多个数学步骤...
C51 Calculator.rar 文件是一个基于C51语言开发的4*4键盘计算器项目。C51是Microchip Technology公司为8051微控制器系列设计的一种高级编程语言,它是标准C语言的一个扩展,增加了对硬件直接访问的功能,因此在...
标题中的"Alltrans EGM2008 Calculator 1.2.zip"指的是一个名为Alltrans的EGM2008计算器的软件版本1.2,它被压缩在一个ZIP文件中。ZIP是一种常见的文件压缩格式,用于将多个文件或文件夹打包成一个单一的可下载文件...
本项目"calculator2.0_】.zip"就是一个很好的实例,它展示了如何运用Python的Tkinter库创建一个功能丰富的图形用户界面(GUI)计算器,同时实现了逻辑层与显示层的分离,以提高代码的可读性和可复用性。下面我们将...
【Calculator】程序是一个基于Java开发的简易图形用户界面(GUI)应用,专为初学者设计,帮助他们理解和实践如何在Java中创建一个简单的计算器。这个项目涵盖了基础的GUI设计、事件处理以及基本的算术运算,是Java ...
《DRAM Calculator for Ryzen:优化内存性能的利器》 在现代计算机系统中,内存(DRAM)的性能对于整体系统性能有着显著影响,特别是在高强度计算任务如游戏、渲染或超频场景下。"DRAM Calculator for Ryzen"是一款...
BigInt Calculator 是一个支持超大整数运算的计算器,可以对长度最多达10000位10进制的数据进行运算。它不但支持普通的四则混合运算,而且具有位操作和表达式运算功能,计算器本身提供了21个存贮单元可供保存运算的中间...
相关推荐
《Calculator-master:构建高效计算器应用》 在计算机领域,计算器软件是不可或缺的工具,尤其对于程序员和数学爱好者来说。本文将深入探讨一个名为"Calculator-master_calculator_"的项目,它是一个基本的Windows...
标题"calculator_C-C++_calculator_"表明我们将探讨一个用C或C++编写的计算器程序。描述中的"function calculator from calculator"暗示我们将专注于计算器程序中的函数实现。 C++相比C语言,提供了类和对象的概念...
《关于Cadence ADEL中的计算器Calculator的使用手册》 Cadence Design Systems, Inc. 是一家在电子设计自动化(EDA)领域具有领先地位的公司,其产品广泛应用于集成电路(IC)和系统级设计。在5.1.41版本的Waveform...
在本文中,我们将对"calculator-master_calculator_"项目进行详尽的探讨,揭示其中蕴含的编程思想和技术栈。 首先,让我们关注"calculator-master"这一命名,它表明我们正在研究的是计算器项目的主分支或主版本。这...
- **多态**:多态性允许我们使用同一个接口处理不同类型的对象,比如可以设计一个抽象的`Calculator`类,然后有多个具体的`SimpleCalculator`和`ScientificCalculator`类实现它。 3. **控制流程**: - **循环**:...
标题中的"DRAM-Calculator-for-Ryzen-1.7.0_RamCal_"指的是一个专为AMD Ryzen处理器设计的DRAM(动态随机存取内存)计算工具的版本号1.7.0,通常这类工具被称为"RAM Calculator"或者"RamCal",正如描述中提到的。...
"Calculator-master.zip"文件所包含的项目,显然是一款计算器应用的源代码库,这为我们提供了一个深入理解计算器App开发的绝佳机会。本文将从设计、功能实现、编程语言、用户界面等方面,对计算器App的开发进行详细...
《AllTrans EGM2008 Calculator:一款高效的学习工具》 在当今信息化时代,学习软件已经成为提升个人技能、拓宽知识领域的重要辅助工具。本文将详细介绍一款名为AllTrans EGM2008 Calculator的免费学习软件,它专为...
【Android Robotium测试详解:创建Calculator测试用例】 在Android应用开发中,自动化测试是确保产品质量和稳定性的重要环节。Robotium是一款强大的自动化测试框架,专为Android应用设计,支持UI层的黑盒和白盒测试...
Geographic Calculator(po-jie)是由Blue Marble公司推出的一款专业坐标转换工具,兼容32位和64位操作系统,软件主要用于各类地理空间数据的处理、转换和查看等操作,软件拥有直观化的用户界面和强大的功能,可以满足...
在这个场景中,`Calculator` 类是一个实现了四则混合运算的封装类,它能够进行加法、减法、乘法和除法操作。下面将详细介绍这个类可能的设计方式以及如何使用它。 首先,`Calculator` 类通常会包含私有(private)...
Calculator,作为一个功能强大的计算工具,不仅提供了基础的数学运算,如加、减、乘、除,还囊括了更复杂的计算功能,满足用户在不同场景下的需求。它可能包括但不限于科学计算、统计分析、工程计算等高级功能。...
Graphing calculator plus 84 graph emulator free 83 详情 功能齐全的科学图形计算器84 plus为学生提供了许多有用的功能: –图形计算器83 ti plus支持图形绘制,绘制许多功能(例如参数,极坐标和函数 )的图形–...
在实际应用中,EGM96calculator.m脚本通常会先读取EGM96.txt文件获取模型系数,然后对用户指定的地理位置进行重力异常和大地水准面起伏的计算。这些计算可能涉及到球谐函数的解算、坐标转换和数值积分等多个数学步骤...
C51 Calculator.rar 文件是一个基于C51语言开发的4*4键盘计算器项目。C51是Microchip Technology公司为8051微控制器系列设计的一种高级编程语言,它是标准C语言的一个扩展,增加了对硬件直接访问的功能,因此在...
标题中的"Alltrans EGM2008 Calculator 1.2.zip"指的是一个名为Alltrans的EGM2008计算器的软件版本1.2,它被压缩在一个ZIP文件中。ZIP是一种常见的文件压缩格式,用于将多个文件或文件夹打包成一个单一的可下载文件...
本项目"calculator2.0_】.zip"就是一个很好的实例,它展示了如何运用Python的Tkinter库创建一个功能丰富的图形用户界面(GUI)计算器,同时实现了逻辑层与显示层的分离,以提高代码的可读性和可复用性。下面我们将...
【Calculator】程序是一个基于Java开发的简易图形用户界面(GUI)应用,专为初学者设计,帮助他们理解和实践如何在Java中创建一个简单的计算器。这个项目涵盖了基础的GUI设计、事件处理以及基本的算术运算,是Java ...
《DRAM Calculator for Ryzen:优化内存性能的利器》 在现代计算机系统中,内存(DRAM)的性能对于整体系统性能有着显著影响,特别是在高强度计算任务如游戏、渲染或超频场景下。"DRAM Calculator for Ryzen"是一款...
BigInt Calculator 是一个支持超大整数运算的计算器,可以对长度最多达10000位10进制的数据进行运算。它不但支持普通的四则混合运算,而且具有位操作和表达式运算功能,计算器本身提供了21个存贮单元可供保存运算的中间...