package com.yiyun.util;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
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 f = new JFrame("Calculator");
//输入面扳
private JPanel inputPanel = new JPanel();
//加减乘除面板
private JPanel operationPanel = new JPanel();
//数字面板
private JPanel buttonsPanel = new JPanel();
//输入数据文本框
private JTextField input = new JTextField(20);
//退格键
private JButton backspace = new JButton("BackSpace");
//清空
private JButton CE = new JButton("CE ");
//删除
private JButton C = new JButton("C ");
//四则运算符号键
private JButton add = new JButton("+");
private JButton sub = new JButton("-");
private JButton mul = new JButton("*");
private JButton div = new JButton("/");
//小数点
private JButton decimal = new JButton(".");
//等号
private JButton equal = new JButton("=");
//数字键
private JButton zero = new JButton("0");
private JButton one = new JButton("1");
private JButton two = new JButton("2");
private JButton three = new JButton("3");
private JButton four = new JButton("4");
private JButton five = new JButton("5");
private JButton six = new JButton("6");
private JButton seven = new JButton("7");
private JButton eight = new JButton("8");
private JButton nine = new JButton("9");
private String num1 = "";//保存第一个运算数字
private String operator = "";//保存运算符号
public static void main(String[] args) {
new Calculator();//new计算器实例
}
public Calculator(){
//添加组件,布局
inputPanel.add(input);
f.add(inputPanel, BorderLayout.NORTH);
operationPanel.add(backspace);
operationPanel.add(CE);
operationPanel.add(C);
f.add(operationPanel, BorderLayout.CENTER);
buttonsPanel.add(add);
buttonsPanel.add(sub);
buttonsPanel.add(mul);
buttonsPanel.add(div);
buttonsPanel.add(one);
buttonsPanel.add(two);
buttonsPanel.add(three);
buttonsPanel.add(zero);
buttonsPanel.add(four);
buttonsPanel.add(five);
buttonsPanel.add(six);
buttonsPanel.add(decimal);
buttonsPanel.add(seven);
buttonsPanel.add(eight);
buttonsPanel.add(nine);
buttonsPanel.add(equal);
buttonsPanel.setLayout(new GridLayout(4, 4));
f.add(buttonsPanel, BorderLayout.SOUTH);
//注册各个组件监听事件
backspace.addMouseListener(new OperationMouseListener());
CE.addMouseListener(new OperationMouseListener());
C.addMouseListener(new OperationMouseListener());
decimal.addMouseListener(new OperationMouseListener());
equal.addMouseListener(new OperationMouseListener());
//注册四则运算监听
add.addMouseListener(new CalcMouseListener());
sub.addMouseListener(new CalcMouseListener());
mul.addMouseListener(new CalcMouseListener());
div.addMouseListener(new CalcMouseListener());
//注册数字监听事件
zero.addMouseListener(new NumberMouseListener());
one.addMouseListener(new NumberMouseListener());
two.addMouseListener(new NumberMouseListener());
three.addMouseListener(new NumberMouseListener());
four.addMouseListener(new NumberMouseListener());
five.addMouseListener(new NumberMouseListener());
six.addMouseListener(new NumberMouseListener());
seven.addMouseListener(new NumberMouseListener());
eight.addMouseListener(new NumberMouseListener());
nine.addMouseListener(new NumberMouseListener());
f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class NumberMouseListener implements MouseListener{
public void mouseClicked(MouseEvent e) {
if(input.getText().trim().equals("0")){//如果文本框已经是0,结果还是0
input.setText(((JButton)e.getSource()).getText().trim());
}else{//否则的话,把0添加到后面,譬如文本框是1,结果就为10
input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
private class CalcMouseListener implements MouseListener{
//如果输入的是运算符号,保存第一个结果和运算符号
public void mouseClicked(MouseEvent e) {
num1 = input.getText().trim();input.setText("");
operator = ((JButton)e.getSource()).getText().trim();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
private class OperationMouseListener implements MouseListener{
public void mouseClicked(MouseEvent e) {
if(e.getSource() == backspace){//退格键,删除一个直到没有字符删除
String inputText = input.getText();
if(inputText.length() > 0){
input.setText(inputText.substring(0, inputText.length() - 1));
}
}else if(e.getSource() == C){
input.setText("0");//C,清空所有运算数字和符号
num1 = "";
}else if(e.getSource() == CE){
input.setText("0");//CE-->将文本框置为0
}else if(e.getSource() == decimal){
String text = input.getText().trim();
//如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点
if(text.indexOf(".") == -1){
input.setText(text.concat("."));
}
}else if(e.getSource() == equal){
//如果是等号
if(!operator.trim().equals("")){
if(!input.getText().trim().equals("")){
double result = 0D;
if(operator.equals("+")){//执行加法运算
result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());
}else if(operator.equals("-")){//减法运算
result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());
}else if(operator.equals("*")){//乘法运算
result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());
}else if(operator.equals("/")){//除法运算
result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());
}
//格式化最终结果,保留两位小数点
input.setText(new DecimalFormat("0.00").format(result));
}
}
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
}相关推荐
一个漂亮的java计算器(实验报告)
这是一个用java实现的计算器,本来没想发上来的,隔了数年,今天偶尔又看到了这个计算器的实验报告,所以就上传上来了,希望能对有这个需求的小伙伴提供帮助吧!这里就直接将实验报告的关键代码演示内容帖上来了,注释就不加了 界面如下 新建java项目复制下面内容就行了 实验内容 程序: package com.yunzhi.GUI; import java.awt.Cursor; impo...
[Java]基于JFrame的计算器界面及部分功能实现
基于JFrame实现计算器界面及部分功能
基于Java JFrame的GUI计算器开发实战
除了整体外观,还可以对特定组件进行个性化设置:设置背景色为黑色,文字颜色为绿色,字体为Courier风格,增强科技感。通过设置按钮的方法,可以统一界面风格。表格:常见颜色与字体设置建议组件类型推荐背景色推荐前景色推荐字体显示框黑色绿色Courier按钮浅灰色深灰色Arial窗口背景白色/浅蓝黑色默认。
Swing实现的简易计算器
java实现JFrame计算器
实现简单的加减乘除,没有实现小数点的运算,界面是使用WindowBuilder控件布局。
JFrame实现计算器
该计算器完全是用java实现,特别适合刚刚入门java的逻辑练习,作为新人一周能独立做出来就可以。此文件是用eclipse打包的,如果用eclipse工具可直接导入查看,如果用的是idea工具,可以打开bin下的.class文件之后,拖入到idea运行即可
【Java】实现计算器
快速概览 1.励志成为大家的作业侠的小说明 2.实现计算器源码与相应注释既然励志成为我可爱的粉丝们的作业侠,我来给大家画给重点 大家想要什么的源码直接私我然后+你们的qq邮箱即可,我看到之后,一定就会立即发你滴! 给大家看几个错误的要代码方法,这样大家会浪费很多宝贵时间哦,我不允许我的小粉丝们的宝贵时间被浪费!!!!:----------------------------------------------------------------------------甚至有可爱的小粉丝想有尝,我怎么可能舍得
用NetBeans做的一个简易计算器
用NetBeans做的一个简易计算器,实现了加减乘除等功能,字符的链接,文本框的清零
基于JFrame的简单计算器
两位数简单计算器
用netbeans编写的简易计算器的源码
对于初学java编程的学者实用性很强,这个是用netbeans编写的,当然一些感兴趣的学者还可以继续去完善,做成科学计算器,使其功能更加完善。
JavaJFrame实现的简易计算器
使用Eclipse中Jframe实现的简单计算器,可以计算"+","-","x","/".导入包即可使用运行。
用java写一个简易的计算器界面
如何用java写一个简易的计算器界面 前言(与本节重点无关可以忽视) 最近了解了一些界面窗口知识,在老师一步步的悉心教导下我却又一次地走向了迷茫——陌生,理解不充分,照搬。咳咳,但是经过几天的拆解,琢磨,实践,我也渐渐粗浅地认识到了一些本质问题。当时教写的是登录界面,所以这次我打算写一个计算器界面来检测一下自己是不是依然一头雾水。 基本准备 首先给类取名CaculatorInterface(计算器界面) package kallen1014; public class CalculatorInterf
从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南
本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。
利用JAVA的JFrame容器类,实现简单的计算器界面和计算功能
本文主要是利用JFrame实现了简单的计算界面和计算功能。
统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定
本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。
基于PI双闭环解耦控制的三相SVPWM电压型逆变器(1)--数学模型
三相电压型逆变器、双PI控制、SVPWM、解耦
Java用Netbeans的JFrame编程计算器
1.JFrame代码 package calculator; import java.util.Arrays; /** * * @author Administrator */ public class UI extends javax.swing.JFrame { String str1=" ",str2; double num1,num2; char oper; double result; String re; /** * Cr...
[多智能体强化学习] 王树森YouTube课程笔记
前言 近期在设计V2X资源分配任务下的状态空间和动作空间,可以说是一筹莫展,是自己菜,现在看来可能也是涉及到一些关于多智能体强化学习实现过程中过于细节的点,目前的知识储备还不够。因此打算用半周到一周的时间重电,希望之后能有进展。 本文内容来自于友人LX所推荐的油管教程,链接如下:多智能体强化学习,一共两节课40min左右。教程废话不多干货不少,老师的声音还好听,推荐直接去看原教程。 这里还要多一嘴,那就是对于强化学习来说,单主体和多主体的界限,在某种程度上来说是很模糊的,并不是场景中有多个主体需要..
用java写一个简单计算器
通过Java编写这个计算器,主要是用来学习JFrame容器和网格布局的。 学习JFrame的博客,感谢博主分享。 java计算器实例中,本博客共有两个版本。 1.0版本: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.Act...
从零组装电赛送药小车:OpenMV视觉核心+STM32控制,我的软硬件联调全记录
本文详细记录了从零构建电赛智能送药小车的全过程,重点解析了OpenMV视觉识别与STM32控制的深度协同方案。通过硬件选型对比、通信协议设计、PID调参等实战经验,解决了巡线精度、十字路口识别等核心问题,最终实现稳定可靠的送药小车系统,助力电子设计竞赛取得优异成绩。
C#解析基恩士(KEYENCE)PLC数据:KV协议通信与实时监控实现
KV协议是基恩士PLC使用的一种专用通信协议,通常用于与上位机进行数据交换。KV协议通过RS-232C、RS-485、Ethernet等接口与上位机通信,支持多种数据类型的读写,包括但不限于位、字、双字、浮点数等。简洁易用:KV协议的通信格式简单,易于实现。支持多种数据类型:支持位数据、字数据、定长字符串等。高效实时性:能够提供较高的实时数据交换性能,适合实时监控应用。本文介绍了如何通过C#与基恩士KV系列PLC进行通信,实现数据的解析和实时监控功能。
Java——一个简单的计算器程序
它实现了一个简单的图形化计算器界面,并提供了一些基本的计算功能和历史记录功能。用户可以通过界面上的按钮进行输入和操作,并在文本域中显示结果和历史记录。
VisionPro 机器视觉案例 之 彩色保险丝个数统计
CogColorSegmenterTool CogColorMatchTool
Java-JFrame简易计算器
使用JFrame,swing布局制作简易计算器 -实现加减乘除 -小数点运算暂时没有实现 -因为是用swing进行界面的布局,所以很方便。直接把控件布置好就可以了。主要是算法的问题。最大的难处就是如何从JTextField里获取两个数进行数学运算。 还有一个难处就是在计算器上进行连续运算。 以下是代码package com.homework.lhh;import java.awt.Even
一文入门车载以太网:从原理到实战,看完就能上手开发
新手选型遵循“适配场景、兼顾成本、优先车规”的原则:普通场景(车载娱乐、普通诊断):100Base-T1 PHY(LAN8742)+ 非TSN交换机(SJA1105)+ STM32H743 ECU + 普通STP线缆;ADAS场景:1000Base-T1 PHY(TJA1101)+ TSN交换机(SJA1110)+ NXP S32G399 ECU + 高抗干扰STP线缆;避免过度选型:如普通娱乐场景无需选择TSN交换机、ASIL-B级芯片,否则会增加成本;
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
java-swing-简单计算器界面的实现
已经学习了一部分的swing知识,现在综合运用里面的部分知识来实现一个计算器的界面。 运用到的知识: 1.常用顶层容器 JFrame类 的使用 2.常用中间容器 JPanel类 的使用 3.单行文本框的实现类 JTextField类 的使用 4.按钮的实现类 JButton类 的使用 5.边框布局管理器 的使用 6.网格布局管理器 的使用 基本思路: 1.创建1个窗口f1 2.创建1个文本框t1...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
7309



被折叠的 条评论
为什么被折叠?



