设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。
(2)计算功能:实现加、减、乘、除等双目运算,开平方、百分数等单目运算;
(3)辅助功能:按钮“C”清空文本框;按钮“←”退格,删除文本框中最右边的一个字符。
代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.StringTokenizer;
class Calculator extends JFrame implements ActionListener{JTextField input;//文本框,显示计算结果JButton []button=new JButton[20];//按钮数组,存放20个按钮组件JPanel pan=new JPanel();String name[]={"C","÷", "×", "←","7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "√", "%", "0", ".", "="};//按钮标签数组double result;//存储双目运算的结果public Calculator(){setTitle("模拟计算器—江海大");pan.setLayout(new GridLayout(5,4));//设置面板pan的布局格式为5行4列的网格布局,存放20个按钮input=new JTextField(20);input.setText("");input.setFont(new Font("宋体",Font.BOLD,18));input.setForeground(Color.BLUE);for(int i=0;i<button.length;i++){button[i]=new JButton(name[i]);button[i].setFont(new Font("黑体",Font.BOLD,20));button[i].addActionListener(this);//给每一个按钮注册事件监听器pan.add(button[i]);}add(input,BorderLayout.NORTH);add(pan,BorderLayout.CENTER);setSize(600,400);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体}//动作响应public void actionPerformed(ActionEvent e){//如果点击按钮 "C"则触发清空文本框的操作if(e.getSource()==button[0]){input.setText("");}//如果点击按钮"="则调用计算方法并在文本框显示结果else if(e.getSource()==button[19]){calculate();input.setText(""+result);//输出计算结果}//如果点击"<--"按钮则删去文本框内字符串的末尾字符else if(e.getSource()==button[3]){String str=input.getText();if(str.length()>1){str=str.substring(0,str.length()-1);input.setText(str);}else{input.setText("");}}//以字符串拼接的方式将点击的按钮的标签拼接起来,成为一个运算表达式字符串else{input.setText(input.getText()+e.getActionCommand());}}public void calculate(){char[]arr=input.getText().toCharArray();//将输入的计算表达式字符串存储在字符数组中便于查找运算符的位置int i=0;//移动标志变量while('0'<=arr[i]&&arr[i]<='9'||arr[i]=='.')//去除数字与小数点以确定双目运算符的位置i++;char operator=arr[i];//将该运算符存储起来//双目运算if(operator!='%'&&operator!='√'){String s=input.getText(),s1,s2;//s1,s2分别存储运算符前后的数值字符串s1=s.substring(0,i);s2=s.substring(i+1,s.length());Double left=Double.parseDouble(s1);//将运算符左边的数值字符串转换为浮点数Double right=Double.parseDouble(s2);//将运算符右边的数值字符串转换为浮点数//根据不同的运算符进行相应的计算if(operator=='+')result=left+right;else if(operator=='-')result=left-right;else if(operator=='×')result=left*right;else if(operator=='÷')result=left/right;}//单目运算else{String s=input.getText(),s1;s1=s.substring(0,s.length()-1);Double a=Double.parseDouble(s1);if(operator=='%'){result=0.01*a;}else if(operator=='√'){result=Math.sqrt(a);}}}public static void main(String[]args){new Calculator();}
}
设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。相关推荐
- java用按钮控制文本框隐藏与显示_编写JAVA程序,在其中有一个按钮和一个文本框。单击按钮时,文本框中显示按钮上显示的字。...
展开全部 一e68a8462616964757a686964616f31333363373766 主要实现技术 Java图形化界面,较为常见的有awt, swing 和swt, 一般使用SWING来 ...
- python 文本框位置_「每日一练」Python文本框的显示和插入
Python强大之处在于对于数据的处理,而处理数据就离不开文本框,那么你知道Python中文本框是如何显示和插入吗? 案例 python文本框的显示和插入 先上代码~ 运行效果 题目详述 第一行: i ...
- 基于列表框的简单选课窗体开发。编写Windows应用程序,设计实现一个简单选课系统,要求:(1)点击“添加”按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加的课程不能为空,不能
基于列表框的简单选课窗体开发.编写Windows应用程序,设计实现一个简单选课系统,要求: (1)点击"添加"按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加 ...
- 按钮控件数组实现计算器界面
数组的应用范围非常广泛,灵活运用可以提高程序的开发效率,减少重复代码.例如,本实例通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现了模拟的计算器界面.实例运行效果如图 本实例的关键点在于 ...
- vc 文本框 只显示下划线_【Axure9百例】36.文本框搜索自动匹配
" 根据输入的内容自动显示匹配内容列表." 这是<Axure9百例>系列第36篇 在文本框搜索时,自动匹配搜索的内容,并以列表的形式显示在文本输入框的下方,选中一项后当 ...
- LabVIEW设计自定义指示灯和按钮控件
目录 1.准备图像素材 2.自定义控件 LabVIEW中提供了很多内置的指示灯和按钮控件,可以实现状态的切换和控制,效果如下图所示: 但是内置的指示灯和按钮控件样式单一.不够美观且可能和程序的风格不搭 ...
- java按钮数组_Java按钮控件数组实现计算器界面
编写程序,通过按钮数组来管理界面中的所有按钮控件,从而使用最少的代码实现模拟的计算器界面. 思路如下: 创建一个类,通过extends使其继承窗体类JFrame: 创建一个JFrame对象,使用JFr ...
- 在access窗体中加图片_Access实战:一种不用按钮控件就能控制子窗体联动的方法...
近来宇哥潜心研究Access的设计,多有心得,在此共享一二.Access窗体若要进行控制,是需要通过按钮控件的,我经过自己探索,发现了一种更加简单的方法,也就是不用控件,通过直接点击窗体已有的表格,就 ...
- C#窗体控件-按钮控件Button
按钮(Button)控件几乎存在于所有Windows对话框中,是Windows应用程序中最常用的控件之一.按钮控件允许用户通过单击来执行操作.按钮最重要的事件,也是最常用的事件就是Click.当用户单 ...
最新文章
- 查询出某个表依赖于某个表的外键,进行遍历删除操作
- Laravel5.4 使用Carbon人性化显示发表评论中文时间
- c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程
- java采集温湿度水浸_配电室水浸及温湿度监测系统可加强环境保障
- 单片机数字滤波算法如何实现?(附代码)
- 小红书点赞收藏有什么用_橱柜门用什么材料好?老师傅开口说话了!听进去算你的,收藏备用...
- 输在学历的起跑线上?没关系,10本书助你技能爆表升职加薪
- android 8 ril,Android 8.0 RIL源码分析(二)
- 3.openldap生成LDAP用户
- Flink Batch SQL 1.10 实践
- 美团监控系统mysql_美团MySQL数据库巡检系统的设计与应用
- Teamviewer远程,应用界面显示空白
- matlab直方图均衡化代码
- linux双硬盘硬件raid,双硬盘组建Raid0磁盘阵列图文教程
- 原创C#Winform桌面应用中实用又美观的开关控件源码分享
- Java版漏斗计时器_新学期新气象 教你在《我的世界》做出特别铃声
- MFC与Windows编程
- VS生成桌面应用程序
- 2014年10月25日深圳彩讯科技和北京宇信易诚的笔试记录
- 【小技巧】酒店Wifi不弹出登陆方案(Mac)