手把手教你用Java的swing制作计算器

其实学到Java这一块很多人会觉得很复杂实际上学会使用方法其实很简单

话不多说直接贴源码,如下:

package cn.sjy.calculator;import javax.swing.*;
import java.awt.*;/*** 简易计算器* @author 石俊熠* 2020.7.13 11:24* 注:仿照某Java大佬的源码改之*/
public class Test {private String str=" ";//输入输出框显示内容private JTextField input;//输出框private JPanel button;//按钮区域private  String[] addbutton={"AC","求根","取反","/","7","8","9","*","4","5","6","-","1","2","3","+","+/-","0",".","="};private String showTextFiledNew;//设置主窗体public Test() {//初始化窗体JFrame f = new JFrame("计算器");Container c = f.getContentPane();c.setLayout(new BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS));//设置排列布局为Y轴排列f.setLocation(200, 300);//f.setSize(500, 600);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);input = new JTextField(30);//设置输入框的长度为30input.setHorizontalAlignment(JTextField.RIGHT);//设置输入框内容的对齐方式,设置为右对齐JPanel jPanel = new JPanel();//建立一个面板jPanel.add(input);c.add(jPanel);GridBagLayout gridBagLayout = new GridBagLayout();GridBagConstraints cs = new GridBagConstraints();button = new JPanel();button.setLayout(gridBagLayout);for (int i = 0; i < addbutton.length; i++) {if ((i + 1) % 4 == 0) {cs.gridwidth = GridBagConstraints.REMAINDER;} else {cs.fill = GridBagConstraints.BOTH;//使组件完全填充其显示区域cs.weightx = 1.0;cs.gridwidth = 1;}JButton b = new JButton(addbutton[i]);gridBagLayout.setConstraints(b, cs);//设置组件的约束b.addActionListener(e -> {String command = e.getActionCommand();setShowTextFiledNew(command);});button.add(b);}c.add(button);f.pack();}/*** 设置显示内容得窗体* @param command 按钮点击命令* 如果按下=执行计算命令* 如果按下运算符 则格式为 空格+运算符+空格* 如果按下数字 则直接拼接* 需要更多资料可以加群:756584822*/public void setShowTextFiledNew(String command) {if(command.equals("=")){str = getResult(str);}else if(command.equals("+")||command.equals("-")||command.equals("*")||command.equals("/")||command.equals("求根")||command.equals("取反")){str = str+" "+command+" ";}else if(command.equals("AC")){str = "";}else{str = str+command;}input.setText(str);//将按钮的信息返回到input中}/*** 计算模块* @param str 需要计算的字符串* 根据空格进行分割成字符串数组* 然后判断是哪种类型进行计算*通过一个result来存放那个结果*/private String getResult(String str) {Double result = 0.0;//用来存放结果String[] need = str.split(" ");//进行字符串分割for (String j : need) {System.out.print(j+" ");}for (int i = 0; i < need.length; i++) {switch (need[i]){case "+":if (result == 0.0 && i==1){result=result+(Double.parseDouble(need[i-1])+Double.parseDouble(need[i+1]));break;}else{result=result+Double.parseDouble(need[i+1]);break;}case "-":if(Double.parseDouble(need[i-1])>=Double.parseDouble(need[i+1])){result = (Double.parseDouble(need[i-1])-Double.parseDouble(need[i+1]));break;}else {result = +(Double.parseDouble(need[i-1])-Double.parseDouble(need[i+1]));break;}case "*":result=result+(Double.parseDouble(need[i-1])*Double.parseDouble(need[i+1]));break;case "/":result=result+(Double.parseDouble(need[i-1])/Double.parseDouble(need[i+1]));break;case "求根":result=result+(Math.sqrt(Double.parseDouble(need[i-1])));break;case "取反":result=result+(-Double.parseDouble(need[i-1]));break;}}return  result+"";}//设置主方法,调用Test方法public static void main(String[] args ){new Test();}
}效果如下

QQ交流圈:756584822

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你们都被电视剧版的 《西游记》给骗了!| 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅你们都被电视剧版的《西游记》给骗了&#xff01;电视剧里挑担子的是沙僧但其实《西游记》原著中大部分都是二师兄挑担子沙僧也就是打个下手&#xff08;图源名场面All&#xff0c;侵权删&#xff09;如果再有人嘲笑你胖你就把这条涨…

.NET 6 Preview 6 Released

宣布 .NET 6 Preview 6Richard 2021 年 7 月 14 日我们很高兴发布 .NET 6 Preview 6。Preview 6 是我们进入 RC 时期之前的倒数第二个预览版。将有两个 RC 版本。此版本本身相对较小&#xff0c;而 Preview 7 会更大一些。在那之后&#xff0c;我们将进行质量修复&#xff0c;直…

SQL2K数据库开发十五之表操作查看表中的数据

1.可以使用SELECT语句查询表中的数据。如在查询分析器中执行SELECT * FROM Products语句就可以查询Products表中的数据&#xff0c;如下图&#xff1a;2.如在企业管理器中查询表中数据&#xff0c;则要展开sample数据库&#xff0c;在Products表上右击鼠标&#xff0c;在弹出的…

中考新大纲:初中数学无非就这26个考点!孩子吃透,再笨也能考115分!

全世界只有3.14 % 的人关注了青少年数学之旅升入初二、初三后数学难度急速上升&#xff0c;您的孩子是否学得吃力成绩却无法提高&#xff1f;1.总说自己上课都能听懂&#xff0c;可题目稍微一变就不会做&#xff1b;2.连课下时间都在刷题&#xff0c;到头来做的全是无用功&…

程序员(工作2年)立flag,面四家,成三家,最后进了蚂蚁.....

作为一个毕业2年的coder, 最近一直在寻找一个合适的机会能够换一个环境&#xff0c;一是寻找一个更加宽阔的舞台不断的提升自己&#xff0c;二是让自己走出现在的舒适区域&#xff0c;迎接更多的挑战和认识更多的人。当然还有为了获得更加好的一份收入。 这一个月&#xff0c;…

深入分析Volatile的实现原理

2019独角兽企业重金招聘Python工程师标准>>> 术语英文单词 描述 共享变量在多个线程之间能够被共享的变量被称为共享变量。共享变量包括所有的实例变量&#xff0c;静态变量和数组元素。他们都被存放在堆内存中&#xff0c;Volatile只作用于共享变量。内存屏障Memor…

Serilog 最佳实践

Serilog 最佳实践概述Serilog[1]是 Microsoft .NET 的结构化日志记录库&#xff0c;并已成为Checkout.com 上NET 的首选日志记录库。它支持各种日志记录目的地&#xff08;称为接收器[2]&#xff09;包从标准控制台和基于文件的接收器到日志服务&#xff0c;如 Datadog。本指南…

世界上迄今为止最安全的加密算法

全世界只有3.14 % 的人关注了青少年数学之旅一个只能用算力来破解的加密算法1人类的加密史公元前5世纪&#xff0c;古希腊人使用一根叫scytale的棍子来传递加密信息。要加密时&#xff0c;先绕棍子卷一张纸条&#xff0c;把信息沿棒水平方向写&#xff0c;写一个字旋转一下&…

手把手教你java快速过滤关键词

java过滤关键词 敏感词、文字过滤是一个网站必不可少的功能&#xff0c;如何设计一个好的、高效的过滤算法是非常有必要的。前段时间我一个朋友&#xff08;马上毕业&#xff0c;接触编程不久&#xff09;要我帮他看一个文字过滤的东西&#xff0c;它说检索效率非常慢。我把它程…

[Delphi]根据输入日期按年月周日输出日期段

输入变量ADateStart&#xff0c;并为其填写起始日期&#xff0c;变量ADateEnd&#xff0c;计算类型AType&#xff0c;输出变量ADateStart&#xff0c;变量ADateEnd procedureFormatDateByType(AType:Integer; varADateStart, ADateEnd: TDate); var//type0日 1周 2月 3年 …

TIOBE 发布 8 月编程语言榜单:C# 排名如何?

刚刚 TIOBE 官方最新发布了 8 月的编程语言榜单&#xff0c;一起来看本月榜单中有什么值得关注的发展趋势吧&#xff1f;每一种编程语言的兴起从来都离不开它所适用的技术领域&#xff0c;二者之间一直以来都是水涨船高的关系。数据挖掘和人工智能的蓬勃发展也是如此&#xff0…

两年了,你还是那个你 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源都市音酱&#xff0c;侵权删&#xff09;

k8s入门你至少需要会哪些

前言相信很多公司都有集成发布pass系统&#xff0c;底层大多数依赖于k8s来进行服务的发布部署/回滚等功能。对于很多业务开发者都是不可见的&#xff0c;在感叹这个东西真好用的同时&#xff0c;想着探一探这背后的原理。今天这篇k8s入门我整理了必会的几个k8s知识点&#xff0…

Windows CE的电源管理之三

本篇将以Windows Mobile为例介绍Windows CE电源管理的实现&#xff0c;大体上&#xff0c;Windows Mobile分为Pocket PC和Smartphone两种版本。这两者之间的主要区别在于触摸屏和电源模型&#xff0c;Smartphone采用的是“Always On”模型。为了说清楚它们的区别&#xff0c;我…

跟你们讲一个鬼故事,TA回来了!

全世界只有3.14 % 的人关注了青少年数学之旅真正决定人与人之间的差距的&#xff0c;其实是我们对事物的见识与内心的格局&#xff0c;见识的深浅决定人生的深浅&#xff0c;格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号&#xff0c;希望能够给…

java之static关键词的作用

static关键词的作用 1、静态成员变量的语法特定 2、静态函数的语法特定 3、静态代码块的语法特定 定义静态成员变量 Person.java class Person{ static int a; }按照以前可以这么调用 public class Test1{ public static void main(String[] args){ Person person new Per…

分布式事务最终一致性-CAP框架轻松搞定

前言对于分布式事务&#xff0c;常用的解决方案根据一致性的程度可以进行如下划分&#xff1a;强一致性(2PC、3PC)&#xff1a;数据库层面的实现&#xff0c;通过锁定资源&#xff0c;牺牲可用性&#xff0c;保证数据的强一致性&#xff0c;效率相对比较低。弱一致性(TCC)&…

Cus系统beta1.2发布

2019独角兽企业重金招聘Python工程师标准>>> 经过小伙伴的努力&#xff0c;Cus后台管理系统开发完成&#xff0c;完善了后台系统&#xff0c;权限控制&#xff0c;新闻发布&#xff0c;商务合作等等功能 主要功能包括&#xff1a; 后台系统截图 更多后台系统截图请点…

区区6位密码,凭什么守护我的百万家产?

全世界只有3.14 % 的人关注了青少年数学之旅今天超模君非常的开心你问为什么&#xff1f;当然是——又双叒可以买新的数学书好开心&#xff01;不过在这欢快的气氛中超模君却听见了小天的叹气声玩笑归玩笑但是银行的密码系统真很安全的吗&#xff1f;今天我们就来讨论下密码学的…

Java开发之上班摸鱼!写最少的代码!

I 前言 本次分享一下我所知道的如何写最少的代码的小技巧&#xff0c;如果你有更好的方案&#xff0c;欢迎在评论区留言&#xff0c;方案很棒的话&#xff0c;加我交流圈&#xff0c;为你送上冬天的一杯奶茶~ Java&#xff1a;我想返回多个返回值 秀一下Go的多返回值&#xf…