当前位置: 首页 > news >正文

java 计算器程序_java计算器程序

,gridheight:指定组件显示区的一列中的单元格数

private String lastCommand;//保存+,-,*,/,=命令

private double result;//保存计算结果

private boolean start;//判断是否为数字开始

public jisuanqi() {

super("java编写的计算器"); //标题栏的名字

container=getContentPane(); //初始化一个容器。用来在容器上添加控件

layout=new GridBagLayout(); //建立一个新的管理器

container.setLayout(layout);

constraints=new GridBagConstraints(); //

start=true;

result=0;

lastCommand = "="; //默认执行的操作

displayField=new JTextField(20); //定义计算区域

displayField.setHorizontalAlignment(JTextField.RIGHT);

//定义计算区域的数字靠右显示

displayField.setBackground(Color.lightGray);//定义计算显示区域的背景颜色

displayField.setForeground(Color.white);//定义计算显示区域的前景颜色

constraints.gridx=0;

constraints.gridy=0; //定义计算区域的X,Y轴

constraints.gridwidth=4; //一行单元格数为4个

constraints.gridheight=1; //定义计算区域的宽度和高度

constraints.fill=GridBagConstraints.BOTH; //定义控件填充满剩余空间

constraints.weightx=50;

constraints.weighty=50; //定义计算区域的X,Y轴单位度量值

layout.setConstraints(displayField,constraints);

container.add(displayField); //将计算区域加入到窗口中

ActionListener insert = new InsertAction(); //定义两个监视器

ActionListener command = new CommandAction();

addButton("Bck",0,1,1,1,insert); //通过定义好的方法添加按钮

addButton("CE",1,1,1,1,insert);

//addButton("显示文字",gridx(行),gridy(列)从0开始,占几个x区域,,占几个y,insert插入

addButton("CLEAR",2,1,2,1,insert);

addButton("7",0,2,1,1,insert);

addButton("8",1,2,1,1,insert);

addButton("9",2,2,1,1,insert);

addButton("/",3,2,1,1,command);

addButton("4",0,3,1,1,insert);

addButton("5",1,3,1,1,insert);

addButton("6",2,3,1,1,insert);

addButton("*",3,3,1,1,command);

addButton("1",0,4,1,1,insert);

addButton("2",1,4,1,1,insert);

addButton("3",2,4,1,1,insert);

addButton("-",3,4,1,1,command);

addButton("0",0,5,1,1,insert);

addButton("+/-",1,5,1,1,insert);//只显示"-"号,"+"没有实用价值

addButton(".",2,5,1,1,insert);

addButton("+",3,5,1,1,command);

addButton("13号韩乾凤版权",0,6,3,1,insert);//占3个单元格,

addButton("=",3,6,1,1,command);

setSize(500,500); //设置窗口的大小

setVisible(true); //设置窗口可见

}

private void addButton(String label,int row,int column,int with,int

height,ActionListener listener) {

//定义添加按钮的方法

JButton button=new JButton(label); //新建一个按钮的对象

constraints.gridx=row;

constraints.gridy=column;

constraints.gridwidth=with;

constraints.gridheight=height;

constraints.fill=GridBagConstraints.BOTH; //定义控件填充满剩余空间

button.addActionListener(listener);

layout.setConstraints(button,constraints);

container.add(button);

constraints.insets=new Insets(1,1,1,1);//设置按钮间的间距

button.setForeground(Color.black);//按钮字体颜色

button.setBorderPainted(true);

button.setContentAreaFilled(true);

button.setBounds(2,2,2,2);

button.contains(5,5);//行列几个按钮

//button.setEnabled(false);

}

private class InsertAction implements ActionListener {

//定义Insert事件的方法

public void actionPerformed(ActionEvent event) {

String input=event.getActionCommand();

if (start) {

displayField.setText(""); //默认计算区域为空

start=false;

if(input.equals("+/-"))

displayField.setText(displayField.getText()+"-");

//如果开始输入的是"+/-",以负数显示

}

if(!input.equals("+/-")) {

if(input.equals("Bck")) {

String str=displayField.getText();

if(str.length()>0)

displayField.setText(str.substring(0,str.length()-1));

//如果单击退格,实现退格的功能

}else if(input.equals("CE")||input.equals("CLEAR")) {

displayField.setText("0");

start=true; //实现清零和复位的功能

}else if(input.equals("韩乾风版权!")){

}

else if(input.equals(".")){

if(displayField.getText().trim().indexOf(".")!=-1){

}

else

displayField.setText(displayField.getText()+input);//输入小数点时,判断是否已经输入过小数点

}

else

displayField.setText(displayField.getText()+input);

}

}

}

private class CommandAction implements ActionListener {

public void actionPerformed(ActionEvent evt) {

String command=evt.getActionCommand();

if(start) {

lastCommand=command;

}else {

calculate(Double.parseDouble(displayField.getText()));

lastCommand=command;

start=true; //记忆输入的操作符号

}

}

}

public void calculate(double x) {

if (lastCommand.equals("+"))

result+= x;

else if (lastCommand.equals("-")) result-=x;

else if (lastCommand.equals("*")) result*=x;

else if (lastCommand.equals("/")) result/=x;

else if (lastCommand.equals("=")) result=x; //实现计算的功能

displayField.setText(""+ result); //显示计算的结果

}

public static void main(String []args) { //主函数

jisuanqi calculator=new jisuanqi();

calculator.setResizable(false);//不可调整大小

calculator.setForeground(Color.MAGENTA);

calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//关闭窗口,退出程序

}

}

相关文章:

  • Log4j被OSGI撞了一下腰
  • 比较分析Vector、ArrayList和hashtable hashmap数据结构
  • java二进制类型_Java数据类型 - 原始和二进制文字
  • hibernate的Criteria的一个bug
  • toad导出mysql数据库_将toad里的数据库结构导出到pdm
  • 炒股精髓:多位高手多年心血结晶
  • 好神奇哟
  • java linux 压缩文件夹_Linux下压缩某个文件夹(文件夹打包)
  • java中mapper层作用_Java的MyBatis框架中Mapper映射配置的使用及原理解析
  • java空接口_java中RandomAccess接口明明是个空接口,有什么用呢?
  • java pdf base64_Javaweb中利用pdf.js显示oracle数据库中Base64编码转为的PDF
  • SQL Server 2005豪华盛宴
  • java班级管理系统代码_基于jsp的班级管理系统-JavaEE实现班级管理系统 - java项目源码...
  • java 聚合服务_远程服务接口聚合带来的性能提升
  • java编写客户_java编写服务器和客户端.docx
  • ES6语法详解(一)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java IO学习笔记一
  • JAVA_NIO系列——Channel和Buffer详解
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • PHP CLI应用的调试原理
  • PHP的类修饰符与访问修饰符
  • Promise面试题2实现异步串行执行
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React-Native - 收藏集 - 掘金
  • SAP云平台里Global Account和Sub Account的关系
  • Spring Cloud Feign的两种使用姿势
  • Vue.js 移动端适配之 vw 解决方案
  • vue学习系列(二)vue-cli
  • 经典排序算法及其 Java 实现
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 山寨一个 Promise
  • 写给高年级小学生看的《Bash 指南》
  • 移动端 h5开发相关内容总结(三)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​学习一下,什么是预包装食品?​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #laravel 通过手动安装依赖PHPExcel#
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (全注解开发)学习Spring-MVC的第三天
  • ***检测工具之RKHunter AIDE
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NetCore项目nginx发布
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET文档生成工具ADB使用图文教程
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .net中调用windows performance记录性能信息