Java 简单的计算器
来源:互联网 发布:淘宝网电视机 编辑:程序博客网 时间:2024/05/16 10:58
这是我发的第一个博客,也是我用Java写的第一个图形程序,它能进行简单的四则运算、开跟、倒数。
package com.UI.JavaUITest;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Calculator02 extends JPanel { private JTextField display; //显示器 private JPanel jPanel; //容器 private double result; //数据存储 private String lastCommand; //特殊命令 private boolean isStart; //执行条件// 构造函数 public Calculator02() { setLayout(new BorderLayout()); //整个窗口布局为BroderLayout() result = 0; lastCommand = "="; isStart = true; display = new JTextField("0"); //建立一个显示器 display.setEnabled(false); //禁止用户输入,副作用是字体颜色变为浅灰色,可以考虑用按钮来当显示器,但按钮当显示器字体会居中显示,不符合习惯 display.setFont(new Font("微软雅黑", Font.BOLD, 20)); //设置显示器中字体格式 add(display, BorderLayout.NORTH); //将显示器放置窗口顶部 ActionListener insert = new InsertAction(); //数字按钮的事件处理机制对象 ActionListener command = new CommandAction(); //特殊按钮的事件处理机制对象 jPanel = new JPanel(new GridLayout(5, 4));//建立一个5行4列的容器,存放按钮// 定义一个addButton方法,用于设置、添加按钮 addButton("C", command); addButton("CE", command); addButton("sqrt", command); addButton("1/x", command); addButton("7", insert); addButton("8", insert); addButton("9", insert); addButton("/", command); addButton("4", insert); addButton("5", insert); addButton("6", insert); addButton("*", command); addButton("1", insert); addButton("2", insert); addButton("3", insert); addButton("-", command); addButton("0", insert); addButton(".", insert); addButton("=", command); addButton("+", command); add(jPanel, BorderLayout.CENTER);//将容器放置窗口中央 }// 添加、设置按钮的方法 public void addButton(String name, ActionListener listener) { JButton jButton = new JButton(name); jButton.addActionListener(listener); //实现按钮的事件处理 jButton.setFont(new Font("微软雅黑", Font.PLAIN, 20)); //设置按钮的字体格式 jPanel.add(jButton);//在容器中添加按钮 }// 数字按钮的事件处理,设置为内部私有类,防止其他类的非法访问 private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); //接收按钮信息// 建立异常处理机制,防止用户非法输入导致的程序崩溃 try {// 判断数字输入是否为第一次,是则清空显示屏,输出按钮信息 if (isStart) { display.setText(""); isStart = false; } display.setText(display.getText() + input); //将数据连接起来显示在显示屏上 }catch (NumberFormatException e) { //捕捉数字格式化异常,重置所有计算变量 display.setText("error"); result = 0; lastCommand = "="; isStart = true; }catch (ArithmeticException e){ //捕捉算数异常,重置所有计算变量 display.setText("error"); result = 0; lastCommand = "="; isStart = true; } } }// 特殊按钮的事件处理机制,设置为内部私有类,防止其他类的非法访问 private class CommandAction implements ActionListener{ public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); //接收按钮信息// 建立异常处理机制,防止用户非法输入导致的程序崩溃 try { // 添加“C”的清除当前数据功能 if (command.equals("C")) { display.setText("0"); isStart = true; }// 添加“CE”的清除所有数据功能,重新初始化所有计算变量 else if (command.equals("CE")) { display.setText("0"); result = 0; lastCommand = "="; isStart = true; }// 判断首次输入是否为“-”,是则为负数 else if (isStart) { if (command.equals("-")) { display.setText("-"); isStart = false; } else lastCommand = command; } else{// 定义calculatorDemo方法,用于计算数值 calculatorDemo(Long.parseLong(display.getText()));//将在显示屏中显示的字符串转换为Long类型 lastCommand = command; isStart = true; } }catch (NumberFormatException e){ //捕捉数字格式化异常 display.setText("error"); result = 0; lastCommand = "="; isStart = true; }catch (ArithmeticException e){ //捕捉算数异常 display.setText("error"); result = 0; lastCommand = "="; isStart = true; } } }// 计算方法 public void calculatorDemo(double num){// 因为break语法的不稳定性较高,在设计程序的时候,因尽量避免使用switch语法,所以在这里使用if语句代替switch,增加程序的稳定性 if (lastCommand.equals("+")) result += num; else if (lastCommand.equals("-")) result -= num; else if (lastCommand.equals("*")) result *= num; else if (lastCommand.equals("/")) result /= num; else if (lastCommand.equals("=")) result = num; else if (lastCommand.equals("sqrt")) result = Math.sqrt(num); else if (lastCommand.equals("1/x")) result = 1 / num; display.setText("" + result); } public static void main(String[] args) { JFrame jFrame = new JFrame("计算器"); //创建窗口 JPanel jPanel2 = new Calculator02(); jFrame.setContentPane(jPanel2);//窗口中的容器可见 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口即关闭程序 jFrame.pack(); jFrame.setLocationRelativeTo(jPanel2); //窗口出现在屏幕中央 jFrame.setVisible(true); //窗口可见 }}
阅读全文
0 0
- 简单的java计算器
- Java 简单的计算器
- java简单的计算器
- JAVA 简单的计算器
- Java 简单的计算器
- 简单的计算器(java)
- Java编的简单计算器
- 简单的计算器-Java-可视化
- 简单计算器的java实现
- java实现简单的计算器
- Java实现的简单计算器
- 简单计算器的Java实现
- 《java---简单计算器的实现》
- 简单的计算器 java版
- JAVA的简单计算器设计
- java简单的计算器类
- java语言的简单计算器
- Java简单版的计算器
- Linux下无法执行shell脚本问题
- Symbol.hasInstance的理解
- KEIL5 for arm 软件编译Keil4 C51程序的方法
- 通过jstat实时查看进程GC情况
- 如何同时传event以及其他参数
- Java 简单的计算器
- 标定
- STM32无人机姿态内外环控制函数
- win7右下角显示此windows副本不是正版
- bzoj3289 Mato的文件管理(树状数组求逆序对+莫队+离散化)
- 一个故事告诉你比特币的原理及运作机制
- 未能加载文件或程序集。。。。系统找不到制定文件
- Visual Studio 2010 C++ 工程文件解读
- ios-xib的加载过程