java简单的计算器类

package chap;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator {
private JFrame frame;
private JPanel panel,panelKeys,panelKeys_up,panelKeys_down;
private JTextField textComputer;//计算区域
private JButton buttonBk,buttonC;//退格键和清零键
private JButton button[];//数字键组
private JButton buttonDot,buttonAddSub,buttonAdd,buttonSub,buttonMul,buttonDiv,button1,button2,button3,buttonEqual;
private double result;//计算结果
private final short ADD = 1;
private final short SUB = 2;
private final short MUL = 3;
private final short DIV = 4;
private short operator = -1;//运算符
public Calculator(){
frame = new JFrame("计算机");
frame.setSize(400, 250);
panel = new JPanel();//全局面板
panel.setVisible(true);
frame.setVisible(true);
frame.getContentPane().add(panel);
ActionListener listener = new ComputerActionListener();//按键监听器
//计算区
textComputer = new JTextField(15);
textComputer.setText("");
textComputer.setEditable(false);
textComputer.setBackground(new Color(255,255,255));
//功能键上半部分
panelKeys_up = new JPanel();
panelKeys_up.setLayout(new FlowLayout(FlowLayout.RIGHT));
buttonBk = new JButton("Backspace");
buttonBk.setForeground(new Color(255,0,0));
buttonC = new JButton("C");
buttonC.setForeground(new Color(255,0,0));
buttonBk.addActionListener(listener);
buttonC.addActionListener(listener);
panelKeys_up.add(buttonBk);
panelKeys_up.add(buttonC);
//功能键下半部分
panelKeys_down = new JPanel();
panelKeys_down.setLayout(new GridLayout(4,5));
button = new JButton[10];
for(int i = 0;i < button.length;i++){
button[i] = new JButton(Integer.toString(i));
button[i].setForeground(new Color(255,0,0));
}
buttonAddSub = new JButton("+/-");
buttonAddSub.setForeground(new Color(255,0,0));
buttonAdd = new JButton("+");
buttonAdd.setForeground(new Color(255,0,0));
buttonSub = new JButton("-");
buttonSub.setForeground(new Color(255,0,0));
buttonMul = new JButton("*");
buttonMul.setForeground(new Color(255,0,0));
buttonDiv = new JButton("/");
buttonDiv.setForeground(new Color(255,0,0));
button1 = new JButton();
button2 = new JButton();
button3 = new JButton();
button1.setForeground(new Color(255,0,0));
button2.setForeground(new Color(255,0,0));
button3.setForeground(new Color(255,0,0));
buttonEqual = new JButton("=");
buttonEqual.setForeground(new Color(255,0,0));
buttonAddSub.addActionListener(listener);
buttonAdd.addActionListener(listener);
buttonSub.addActionListener(listener);
buttonMul.addActionListener(listener);
buttonDiv.addActionListener(listener);
buttonEqual.addActionListener(listener);
for(int i = 0 ; i <=9 ; i++){
button[i].addActionListener(listener);
}
for(int i = 0 ; i <=9 ; i++){
panelKeys_down.add(button[i]);
}
panelKeys_down.add(buttonAddSub);
panelKeys_down.add(buttonAdd);
panelKeys_down.add(buttonSub);
panelKeys_down.add(buttonMul);
panelKeys_down.add(buttonDiv);
panelKeys_down.add(buttonEqual);
panel.setLayout(new BorderLayout());
panel.add(textComputer,BorderLayout.NORTH);
panel.add(panelKeys_up,BorderLayout.CENTER);
panel.add(panelKeys_down,BorderLayout.SOUTH);
}
class ComputerActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
Object keyButton = event.getSource();
String text = textComputer.getText();
DecimalFormat df = new DecimalFormat("0.###########");
//Backspace
if(keyButton == buttonBk && text.length() > 0){
textComputer.setText(text.substring(0,text.length()-1));
}
//C键
if(keyButton == buttonC){
result = 0;
textComputer.setText("");
}
//数字键
for(int i=0;i<10;i++){
if(keyButton == button[i]){
textComputer.setText(text+i);
}
}
if(keyButton == buttonAdd){
operator = 1;
}
if(keyButton == buttonSub){
operator = 2;
}
if(keyButton == buttonMul){
operator = 3;
}
if(keyButton == buttonDiv){
operator = 4;
}
//符号键
if(keyButton == buttonAdd || keyButton == buttonSub || keyButton == buttonMul || keyButton == buttonDiv || keyButton == buttonEqual){
switch(operator){
case ADD:
result += Double.parseDouble(text);
break;
case SUB:
result -=Double.parseDouble(text);
break;
case MUL:
result *=Double.parseDouble(text);
break;
case DIV:
result /=Double.parseDouble(text);
break;
default:
result = Double.parseDouble(text);
}
textComputer.setText("");
}
if(keyButton == buttonEqual){
textComputer.setText(String.valueOf(result));
}
}
}
public static void main(String args[]){
new Calculator();
}
}
时间: 2024-10-06 11:09:45

java简单的计算器类的相关文章

JAVA——简单科学计算器设计

package Calculator_JCoder; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.text.DecimalFormat; import javax.swing.*; import jav

使用Java实现的简单的计算器

package calculate; /** * @author Wayne; * @time 2014年7月14日; * @project java计算器2.0; */ import java.awt.*; import java.awt.event.*; import java.text.DecimalFormat; import javax.swing.*; import javax.swing.JOptionPane; import javax.script.*; public clas

JAVA开发简易计算器界面-SWT

大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上了解到NoSQL和Hadoop这样的信息,当时就简单觉得很新奇,没想到一年之后发展如此迅速~~当然我这样说,并不是叫大家去追寻新技术,最根本的还是基础打牢靠,休息的时候多去了解下最新的IT动态.学习下前辈高手的一些技能~~打铁还需自身硬嘛! 我写博客的目的:一来是为了促进自身的进步,二来是为了希望与

从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了. Caliburn.Micro(Caliburn.Micro框架概述 - https://blog.csdn.net/lzuacm/article/details/78886436) 是一个轻量级的WPF框架,简化了WPF中的不少用法,推荐做WPF开发时优先使用. 真正快速而熟练地掌握一门技术就可以尝试着用最快的

Hibernate系列(二):简单编写HibernateUtil类来优化性能

相对于Hibernate系列(一)中的代码编写HibernateUtil类以提高程序的运行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; }

Java对日期Date类进行加减运算,年份加减,月份加减

Date d=new Date();    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");    System.out.println("今天的日期:"+df.format(d));    System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000))); 

rabbitmq的java简单实现

1,安装rabbitmq.我的是ubuntu14.04,在官网上面下载最新的安装文件http://www.rabbitmq.com/install-debian.html 2.安装完之后  启动rabbitmq, sudo rabbitmq-server 3.下载jar包 4.最简单的hello world的实现 Sender类 package com.lubby.test; import java.io.IOException; import com.rabbitmq.client.Chann

java点滴之InetAddress类和InetSocketAddress的使用

一简介 InetAddress是Java对IP地址的封装,代表互联网协议(IP)地址: InetAddress对象的获取只能通过静态方法,比如根据主机名获取主机的ip地址封装对象: InetAddress add=InetAddress.getByName("BOPZKQZ9SSY5ECY"); 主机名:BOPZKQZ9SSXXXXX,  ip地址:1XX.1XX.2XX.210 InetSocketAddress是SocketAddress的实现子类. 此类实现 IP 套接字地址(I

4.2-全栈Java笔记:对象和类的概念及定义

对象和类的概念 我们人认识世界,其实就是面向对象的.大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊.比如现在让大家认识一下"天使"这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了. 但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程. 小时候,我们学自然数时怎么定义的?像1