java swing计算器_用winform编写计算器

java swing计算器_用winform编写计算器实现要求1、使用Java图形界面组件设计软件,界面如图所示。2、软件能够满足基本的“加、减、乘、除”等运算要求。3、程序代码清晰,语法规范,结构合理,逻辑正确。4、编辑菜单中包括“复制和粘贴”两个菜单项,为菜单项编写事件代码。实现代码:importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

实现要求

1、使用Java图形界面组件设计软件,界面如图所示。

2、软件能够满足基本的“加、减、乘、除”等运算要求。

3、程序代码清晰,语法规范,结构合理,逻辑正确。

4、编辑菜单中包括“复制和粘贴”两个菜单项,为菜单项编写事件代码。

image-20211218120016176

实现代码:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator extends JFrame { 

// 显示计算器按钮的值和计算后的值
JTextField display;
JPanel panel1;// 面板1,放文本框
JPanel panel2;// 面板2,放按钮
String nowButton;// 当前按下的变量
public Calculator() { 

this.setBounds(0, 0, 500, 500);
this.setLocationRelativeTo(null);// 让窗口在屏幕中间显示
setTitle("计算器");
// 菜单栏
JMenuBar menuBar = new JMenuBar();// 创建一个菜单栏
JMenu editMenu = new JMenu("编辑(E)");// 创建一级菜单
//创建 "编辑" 一级菜单的子菜单
JMenuItem copyMenuItem = new JMenuItem("复制");
JMenuItem pasteMenuItem = new JMenuItem("粘贴");
// 子菜单添加到一级菜单
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
//将一级菜单添加到菜单栏
menuBar.add(editMenu);
//将菜单栏添加到JFrame窗口
this.setJMenuBar(menuBar);
// 设置 "复制" 子菜单被点击的监听器
copyMenuItem.addActionListener(new ActionListener() { 

@Override
public void actionPerformed(ActionEvent e) { 

System.out.println("复制 被点击");
String i = display.getText();
display.copy();
JButton jb1 = new JButton("复制");
jb1.addActionListener(this);
}
});
// 设置 "粘贴" 子菜单被点击的监听器
pasteMenuItem.addActionListener(new ActionListener() { 

@Override
public void actionPerformed(ActionEvent e) { 

System.out.println("粘贴 被点击");
display.paste();
}
});
// 初始化,把文本框加在上面north里
display = new JTextField("");
display.setEnabled(true);
add(display, BorderLayout.NORTH);
// 监听操作按钮
ActionListener command = new commandAction();
// panel1是中间16个按钮的布局,放到布局管理器的center里
panel1 = new JPanel();
panel1.setLayout(new GridLayout(5, 4, 5, 5));
addButton1("7", command);
addButton1("8", command);
addButton1("9", command);
addButton1("/", command);
addButton1("4", command);
addButton1("5", command);
addButton1("6", command);
addButton1("*", command);
addButton1("1", command);
addButton1("2", command);
addButton1("3", command);
addButton1("-", command);
addButton1("0", command);
addButton1("+/-", command);
addButton1(".", command);
addButton1("+", command);
addButton1("1/x", command);
addButton1("%", command);
addButton1("sqrt", command);
addButton1("=", command);
add(panel1, BorderLayout.SOUTH);
// panel2是下面的backspace和c的2个的布局,放到布局管理器的south里
panel2 = new JPanel();
panel2.setLayout(new GridLayout(1, 2, 5, 5));
addButton2("BackSace", command);
addButton2("C", command);
add(panel2, BorderLayout.CENTER);
pack(); // 根据组件大小自动调节窗口大小
}
// 注册事件监听器方法(panel1的)
public void addButton1(String label, ActionListener listener) { 

// TODO 自动生成的方法存根
JButton button = new JButton(label);
button.addActionListener(listener);
panel1.add(button);
}
// 注册监听器方法(panel2的)
private void addButton2(String label, ActionListener listener) { 

// TODO 自动生成的方法存根
JButton button = new JButton(label);
button.addActionListener(listener);
panel2.add(button);
}
// 创建内部类,作用于单击按钮执行命令的监听器
class commandAction implements ActionListener { 

@Override
public void actionPerformed(ActionEvent event) { 

// TODO 自动生成的方法存根
nowButton = event.getActionCommand();
if (nowButton != "BackSace" && nowButton != "=") { 

// 如果是回退和=就不打印这个了
display.setText(display.getText() + nowButton);
}
if (nowButton.equals("=")) { 

// 如果是等于号,就计算结果
display.setText(jisuan1(display.getText()));
}
if (nowButton.equals("BackSace")) { 

// 回退一个字符
StringBuffer sb = new StringBuffer(display.getText());
display.setText(sb.substring(0, sb.length() - 1));
}
if (nowButton.equals("C")) { 

// 清空
display.setText("");
}
}
}
// 用来计算的方法
public String jisuan1(String string) { 

StringBuffer sb = new StringBuffer(string);
int commandCount = 0;// 符号数量
int j = 0;// 计数器
// 计算有多少个运算符,就有n+1个数字
for (j = 0; j < sb.length(); j++) { 

if (sb.charAt(j) <= '9' && sb.charAt(j) >= '0' || sb.charAt(j) == '.') { 

continue;
} else { 

commandCount++;
}
}
// 初始化符号数组
char[] command = new char[commandCount];
// 初始化数字数组(用字符串表示)
String[] num = new String[commandCount + 1];
for (j = 0; j < num.length; j++) { 

num[j] = "";
}
// 遍历一遍,吧每个数字存进数字数组,每个符号存进符号数组
int k = 0;
for (j = 0; j < sb.length(); j++) { 

if (sb.charAt(j) <= '9' && sb.charAt(j) >= '0' || sb.charAt(j) == '.') { 

num[k] += sb.charAt(j);
continue;
} else { 

command[k] = sb.charAt(j);
k++;
}
}
// 计算结果
double result = 0;
for (int i = 0; i < commandCount; i++) { 

// 取前两个数,和第一个操作符,运算
double num1 = Double.parseDouble(num[i]);
double num2 = Double.parseDouble(num[i + 1]);
char cc = command[i];
// 计算
switch (cc) { 

case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
case '%':
result = num1 % num2;
break;
default:
break;
}
num[i + 1] = String.valueOf(result);
}
return String.valueOf(result);
}
//主方法,运行本类,显示窗体
public static void main(String[] args) { 

new Calculator().setVisible(true);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192646.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • git 删除文件后如何恢复[通俗易懂]

    git 删除文件后如何恢复[通俗易懂]有时候不小心在git中rm了文件。怎么恢复呢?别急,咱们一步步来。首先gitstatus一把,看看此时工作区的状态[xxx@xxxstatic_files]$gitstatus#Onbranchmasternothingtocommit(workingdirectoryclean)可见此时没有任何修改的内容。再看看具体有什么xxx@xxxstatic_files]$

  • 如何申请注册在国内可以登录使用国外邮箱?「建议收藏」

    如何申请注册在国内可以登录使用国外邮箱?「建议收藏」2022年冬奥会的开始、冰墩墩的爆火,这些让在国外无法回国的华人,十分羡慕,也让很多之前不怎么联系的朋友使用邮件交流了起来,那么是不是所有邮箱都可以向国外发信呢?其实并不是,我之前使用过,很多邮箱都是无法向国外发信的,现在我注册使用的是TomVIP邮箱,公司使用的Tom企业邮箱,因为做出口贸易,才选择的这家邮箱,在国外收发信方面做的还是非常棒的!如何申请注册国外邮箱首先,要进入邮箱官网(网页进行搜索、网址直接进入),选择自己喜欢的邮箱域名,点击注册;其次,选择邮箱套餐,依据自己日常使用的邮箱容量、发信

  • 圆柱体积怎么算立方公式_圆柱体积计算公式 计算方法有哪些[通俗易懂]

    圆柱体积怎么算立方公式_圆柱体积计算公式 计算方法有哪些[通俗易懂]体积公式是用于计算各种几何体体积的数学算式,那么,圆柱体积计算公式是什么呢?下面小编整理了圆柱体积计算公式,供大家参考!圆柱体积计算公式有哪些π是圆周率,一般取3.14r是圆柱底面半径h为圆柱的高圆柱体体积=底面积×高V=πr2h=V=sh还可以是v=1/2ch×r侧面积的一半×半径圆柱体积相关公式圆柱的侧面积=底面圆的周长×高圆柱的表面积=上下底面面积+侧面积圆柱的体积=底面积×高圆柱的体积怎么…

  • ThinkPHP中数据库操作返回值总结[通俗易懂]

    转载自:ThinkPHP中数据库操作返回值总结关键字:  Thinkphp,返回值,数据库操作,select返回值,add返回值,setDec返回值Thinkphp中的Think\Model类提供了数据库的基本CURD(Create、Update、Read及Delete),通过该类可以很便捷的进行操作。Model类及扩展类主要的方法有:Create操作:create(

  • java解析xml element_java解析XML Node与Element的区别(推荐)「建议收藏」

    java解析xml element_java解析XML Node与Element的区别(推荐)「建议收藏」对Element和Node有困惑是因为对xml整个结构不了解,以下作为一个简要概述:以下图为w3c.org网站的xml文档树图:从上图可以看出,一个xml文档由元素节点,属性节点,文本节点构成,其中bookstore被称为文档元素或根元素,也是一个元素节点XMLDOM是这样规定一个节点的XML文档中的每个成分都是一个节点。整个文档是一个文档节点即Document节点。在java中Doc…

  • 微信小程序——图片识别

    微信小程序——图片识别我的微信小程序期末大作业——基于百度大脑API的图片识别小程序具体实现了动物识别、植物识别、车辆识别三个功能实验源码已经放到了我的GitHub,欢迎测试修改下面给大家分享该项目的实验报告????目录1概述1.1课程大作业目的与要求1.2课程大作业简介2设计思路2.1图片识别API2.2微信小程序UI框架3设计方案4设计过程4.1百度开放平台注册4.2获取asscee_…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号