DIY简易计算器

news/2025/2/22 8:26:21/

DIY简易计算器

借鉴博主https://blog.csdn.net/without_scruple/article/details/78603605
这位博主的代码是我看到的最容易理解并简洁的代码,同时我添加了清除、命名、图标功能,实现简单的加减乘除
对java界面有了更近一步理解
代码如下:

package design;import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.StreamTokenizer;
import java.util.StringTokenizer;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Demo1_topic01 extends JFrame {private static final long serialVersionUID = 1L;private JTextField text;public JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;	//0~9四个数字(可写成数组)public JButton bot,add,sub,mul,div,equ,clear;	//加减乘除以及小数点五个符号private JPanel panel;public Demo1_topic01() {init();Panel();MyEvent();	//事件处理}private void MyEvent() {//为各按钮添加事件处理Text(jb0);Text(jb1);Text(jb2);Text(jb3);Text(jb4);Text(jb5);Text(jb6);Text(jb7);Text(jb8);Text(jb9);Text(bot);Text(add);Text(sub);Text(mul);Text(div);//“=”按钮的事件处理equ.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {text.setText(text.getText() + equ.getText());if(text.getText().contains("+")) {//做加法运算StringTokenizer str1 = new StringTokenizer(text.getText(), "+");double d1, d2 = 0;d1 = Double.parseDouble(str1.nextToken());while (str1.hasMoreTokens()) {StringTokenizer str2 = new StringTokenizer(str1.nextToken(),"=");d2 = Double.parseDouble(str2.nextToken());}text.setText(text.getText() + " " + (d1+d2));//将运算结果放到text区域}else if (text.getText().contains("-")) {StringTokenizer str1 = new StringTokenizer(text.getText(),"-");double d1,d2 = 0;d1 = Double.parseDouble(str1.nextToken());while(str1.hasMoreTokens()){StringTokenizer str2 = new StringTokenizer(str1.nextToken(),"=");d2 = Double.parseDouble(str2.nextToken());}text.setText(text.getText() + " " + (d1-d2));}else if(text.getText().contains("*")) {StringTokenizer str1 = new StringTokenizer(text.getText(),"*");double d1,d2 = 0;d1 = Double.parseDouble(str1.nextToken());while(str1.hasMoreTokens()){StringTokenizer str2 = new StringTokenizer(str1.nextToken(),"=");d2 = Double.parseDouble(str2.nextToken());}text.setText(text.getText() + " " + (d1*d2));}else if (text.getText().contains("/")){StringTokenizer str1 = new StringTokenizer(text.getText(),"/");double d1,d2 = 0;d1 = Double.parseDouble(str1.nextToken());while(str1.hasMoreTokens()){StringTokenizer str2 = new StringTokenizer(str1.nextToken(),"=");d2 = Double.parseDouble(str2.nextToken());}text.setText(text.getText() + " " + (d1/d2));}}});clear.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {text.setText("");}});}private void Text(final JButton button) {//各按钮的事件处理方法button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String str = button.getText();text.setText(text.getText() + str);}});}private void Panel() {panel = new JPanel();		//新建计算器数字及符号所在区域面板panel.setLayout(new GridLayout(4,4));	//设置面板的布局方式//将各按钮组件放入面板(panel)中//第一行panel.add(jb7);panel.add(jb8);panel.add(jb9);panel.add(div);//第二行panel.add(jb4);panel.add(jb5);panel.add(jb6);panel.add(mul);//第三行panel.add(jb1);panel.add(jb2);panel.add(jb3);panel.add(sub);//第四行panel.add(bot);panel.add(jb0);panel.add(equ);panel.add(add);//panel.add(clear);this.add(panel,BorderLayout.CENTER);Panel sourth  = new Panel();sourth.add(clear);this.add(sourth,BorderLayout.SOUTH);//将Panel放在Frame的南边}private void init() {this.setBounds(800, 300, 400, 400);	//窗体大小this.setTitle("最白の白菜—简单计算器");			//窗体名称this.setLayout(new BorderLayout());text = new JTextField(30);			//计算区域this.add(text,BorderLayout.NORTH);//新建数字按钮jb0 = new JButton("0");jb1 = new JButton("1");jb2 = new JButton("2");jb3 = new JButton("3");jb4 = new JButton("4");jb5 = new JButton("5");jb6 = new JButton("6");jb7 = new JButton("7");jb8 = new JButton("8");jb9 = new JButton("9");//新建符号按钮bot = new JButton(".");add = new JButton("+");sub = new JButton("-");mul = new JButton("*");div = new JButton("/");equ = new JButton("=");clear = new JButton("C");this.setIconImage(Toolkit.getDefaultToolkit().createImage("计算器.png"));this.setVisible(true);			//设置窗体显示}public static void main(String[] args) {new Demo1_topic01();}}

运行界面
在这里插入图片描述在这里插入图片描述


http://www.ppmy.cn/news/262572.html

相关文章

i.MX RT1010跨界MCU上手体验(上)

由于项目需要性价比高一些的高性能MCU,了解到NXP的RT1010主频高达500MHZ的MCU,半个月以前已经拿到官方Demo板了,今天抽空上电体验下,在此记录。这颗芯片的优势是主频高,功能全,价格合理,但是需要…

diy服务器个人主机_DIY个人服务器

先谈谈配置: 主板:英业达B810,14年生产的,二手货,爆新,860入手的。 主板为EATX架构(或称SSI EEB),主板尺寸为12英寸*13英寸(30.48cm*33.02cm),要全塔大机箱才可以安装进。 主芯片组是INTEL C602,支持两颗INTEL E5 26系列V1 V2的CPU。板载ASPEED 2300(BMC)显卡 2个SATA 3.…

文字台式计算机组装步骤,2017最新DIY主机教程 组装机图文+文字安装步骤

最近京东618活动开始了,小编身边好几位同事都够买新主机了,不过对于喜欢动手的玩家们来说自己购买配件安装主机倒也是一种享受。因为是自己亲手组装配置的机子,会感觉备有成就感哦。好了,还不知道怎么DIY组装电脑的小白们&#xf…

打造高质量视频,创造视觉奇观!Camtasia 2023为你升级!

嘿,伙计! 在这个全新版本中,我们迎来了焕然一新的动画控制和更简化的特效制作流程,让创作变得更高效。 不仅如此,全新的背景去除和动画光标功能也让视频拥有全新的视觉体验。让我们先谈谈光标,这个细节或…

JAVA项目代码几乎没有改动,重新发布后突然报错,无法启动

项目场景: 提示:这里简述项目相关背景: JAVA项目代码几乎没有改动,重新发布后突然报错,无法启动 问题描述 提示:这里描述项目中遇到的问题: JAVA项目代码几乎没有改动,重新发布后…

jdk配置语句以及idea配置问题idea科学使用

一、第一步上链接 官网地址,不过每次都在变版本不过都一样没事: https://www.oracle.com/java/technologies/downloads/ idea2021官网 https://www.jetbrains.com/zh-cn/idea/download/other.html 你可以下载右边付费的版本,如果想下载左边…

用jprofiler来分析 jvm 堆 内存泄露,fullgc

jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客 堆太大? 方法1: 重新设置堆后,重启,复现. 方法2: 切割 split -b 1M heap.bin smallfilescp smallfile* usernamemac-host:/Users/username/cat smallfile* > heap.bin官网文档 JProfiler Help - HPROF snapshot…

NAT模式 LVS负载均衡群集部署

NAT模式 LVS负载均衡群集部署 一.部署共享存储(NFS服务器:192.168.80.102)1.关闭防火墙,查看是否有rpcbind和nfs-utils的包2.创建两个共享文件目录3.将共享路径及网段添加到/etc/exports中(设置为只可读)4.…