来学习java语言也有十来天了,感觉有的时候挺没信心的,面对那些出过N次错误还继续的重犯,面对一个程序的一个小错误看了很久都没能找出来.不过特别高兴的是,在自己的努力过程中,还是收获到了自己比较满意的结果.在现在完成的两个小项目计算器和画板中,虽然功能上还是很局限,但是已经很满意了.毕竟我才刚刚开始接触编程之类的东东,刚入门嘛,适应总要有一个过程.慢慢来嘛!下面先来介绍我制作的山寨计算器.
如果要完成计算器这个项目,其实并不难,不过我的建议就是先把这个实现的过程分为以下及部分:1,先创建一个计算器的界面;2,创建一个输入文字的文本框;3,创建所需要的按钮;4,给按钮设置命令,添加监听器;5,在监听器中实现算法;6,根据自己的爱好及需要,美化计算器.
下面展示相关代码.
计算器类
package jisuanqi;
/**
* 创建一个计算器类
*/
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class jisuan {
public static void main(String[]args){
jisuan ji = new jisuan();
ji.showUI();
}
/**
* 仔细化方法
*/
public void showUI(){
JFrame jfr = new JFrame();
jfr.setTitle("计算器Z.30");
jfr.setSize(240,250);
java.awt.FlowLayout flo = new java.awt.FlowLayout();
jfr.setLayout(flo);
JTextField jt2 = new JTextField(20);
jfr.add(jt2);
jt2.setHorizontalAlignment(4);
jisuanListener jis = new jisuanListener(jt2);
for(int a=0;a<10;a++){
JButton jbu = new JButton(a+"");
jbu.setActionCommand(a+"");
jbu.addActionListener(jis);
jbu.setBackground(Color.CYAN);
jfr.add(jbu);
}
//创建按钮
JButton jb = new JButton("+");
JButton jb1 = new JButton("-");
JButton jb2 = new JButton("*");
JButton jb3 = new JButton("/");
JButton jb0 = new JButton(".");
JButton jb4 = new JButton("=");
JButton jb5 = new JButton("C");
JButton jb6 = new JButton("Backspace");
JButton jb7 = new JButton("1/x");
JButton jb8 = new JButton("+/-");
JButton jb9 = new JButton("M+");
JButton jb10 = new JButton("MR");
JLabel jl = new JLabel("Author:Zhuzhenke");
JLabel jl1 = new JLabel("Date:2013.01.30");
/**
* 设置按钮颜色
*/
jb.setBackground(Color.LIGHT_GRAY);
jb1.setBackground(Color.LIGHT_GRAY);
jb2.setBackground(Color.LIGHT_GRAY);
jb3.setBackground(Color.LIGHT_GRAY);
jb0.setBackground(Color.LIGHT_GRAY);
jb4.setBackground(Color.red);
jb5.setBackground(Color.green);
jb6.setBackground(Color.green);
jb7.setBackground(Color.yellow);
jb8.setBackground(Color.yellow);
jb9.setBackground(Color.yellow);
jb10.setBackground(Color.yellow);
//设置按钮命令
jb.setActionCommand("+");
jb1.setActionCommand("-");
jb2.setActionCommand("*");
jb3.setActionCommand("/");
jb4.setActionCommand("=");
jb5.setActionCommand("C");
jb6.setActionCommand("Backspace");
jb7.setActionCommand("1/x");
jb8.setActionCommand("+/-");
jb0.setActionCommand(".");
//给按钮添加监听器
jb.addActionListener(jis);
jb1.addActionListener(jis);
jb2.addActionListener(jis);
jb3.addActionListener(jis);
jb4.addActionListener(jis);
jb5.addActionListener(jis);
jb6.addActionListener(jis);
jb7.addActionListener(jis);
jb8.addActionListener(jis);
jb0.addActionListener(jis);
//将按钮添加到窗体
jfr.add(jb);
jfr.add(jb1);
jfr.add(jb2);
jfr.add(jb3);
jfr.add(jb0);
jfr.add(jb4);
jfr.add(jb5);
jfr.add(jb6);
jfr.add(jb7);
jfr.add(jb8);
jfr.add(jb9);
jfr.add(jb10);
jfr.add(jl);
jfr.add(jl1);
jfr.setVisible(true);
}
}
监听器类
package jisuanqi;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
/**
* 创建一个计算机监听器类
* @author Administrator
*
*/
public class jisuanListener implements ActionListener{
public JTextField jt2;
//构造jisuanji类的方法
public jisuanListener (JTextField jt2){
this.jt2 = jt2;
}
//重写方法
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
String ta = jt2.getText();
if("C".contains(command)){
jt2.setText("");
}else if("=".equals(command)){
//加法的运算
if(ta.contains("+")){
int index = ta.indexOf("+");
String front = ta.substring(0,index);
String end = ta.substring(index+1);
float f = Float.parseFloat(front);
float en = Float.parseFloat(end);
float q = f+en;
jt2.setText(q+"");
//减法的运算
}else if(ta.contains("-")){
int index1 = ta.indexOf("-");
String front1 = ta.substring(0,index1);
String end1 = ta.substring(index1+1);
float f1 = Float.parseFloat(front1);
float e1 = Float.parseFloat(end1);
float q1 = f1-e1;
jt2.setText(q1+"");
//乘法的运算
}else if(ta.contains("*")) {
int index2 = ta.indexOf("*");
String front2 = ta.substring(0,index2);
String end2 = ta.substring(index2+1);
float f2 = Float.parseFloat(front2);
float e2 = Float.parseFloat(end2);
float q2 = f2*e2;
jt2.setText(q2+"");
//除法的运算
}else if (ta.contains("/")){
int index3 = ta.indexOf("/");
String front3 = ta.substring(0,index3);
String end3 = ta.substring(index3+1);
float f3 = Float.parseFloat(front3);
float e3 = Float.parseFloat(end3);
float q3 = f3/e3;
jt2.setText(q3+"");
}else {//如果不含有运算符,就显示数字
ta = ta+command;
jt2.setText(ta);
}
}else if("Backspace".equals(command)){
int index4 = ta.length();
String front4 = ta.substring(0,index4-1);
jt2.setText(front4+"");
}else if("1/x".equals(command)){
int ta1 = Integer.parseInt(ta);
double q4 = 1/(double)ta1;
jt2.setText(q4+"");
}else if("+/-".equals(command)){
int ta2 = Integer.parseInt(ta);
int q5 =ta2/-1;
jt2.setText(q5+"");
}else{
ta = ta+command;
jt2.setText(ta);
}
}
}
具体的解析过程在代码中有体现,不过在实现计算器项目时,在敲代码方面还是走了点弯路,例如在创建数字按钮时可以用for循环来实现.这项目当然还有不足的地方.比如说,还有在连续的计算中,如果是文本框中输入2+2+2时,计算器会不能运行,还有就是一些Windows中拥有的按钮功能不能实现.总之还得继续完善,继续加油!
- 大小: 16.7 KB
分享到:
相关推荐
TI-83模拟计算器是一款专为那些需要在个人电脑上使用TI-83图形计算器功能的...通过这个模拟器,用户可以在任何支持的设备上重现经典计算器的体验,无论是在进行科学计算还是在准备学术考试,都能得到实实在在的帮助。
同时,计算器通常设有重现功能,方便回顾之前的计算步骤。 错误指示器是计算器的重要组成部分,它会显示特定符号以提示用户输入错误或计算异常。例如,溢出、除以零等常见错误,都会通过特定的错误代码显示出来。 ...
这个设计论文的目的是实现一个功能完备的计算器,不仅能够进行基本的算术运算,还能够记录计算过程并在本地重现历史计算。下面我们将详细探讨这个计算器程序的各个组成部分。 首先,Calculator类是整个计算器的核心...
【标题】"CalcUI 高仿小米计算器UI"是一个针对Android平台开发的用户界面项目,旨在重现小米计算器的外观和交互设计。这个项目对于初学者来说是一个很好的实践案例,可以帮助他们学习和理解如何在Android应用中创建...
- **恢复默认设置:** 若要初始化计算器的模式及设置,并清除重现存储器及变量,可通过执行“AB3(All)=”来实现。 #### 九、基本计算 - **算术运算:** 在进行基本计算时,请使用“F”键进入COMP模式。需要注意的...
密立根油滴实验平衡法计算器的出现,为物理学研究与教育带来了一场革命性的变革。在物理学的历史长河中,密立根油滴实验具有举足轻重的地位,它不仅印证了电子电荷的量子化特性,还为量子物理学的发展奠定了坚实的...
【标题】:“模拟Windows小型计算器”是一个基于MFC(Microsoft Foundation Classes)库开发的应用程序,旨在重现Windows操作系统自带的计算器功能。MFC是微软提供的一套C++类库,它封装了Windows API,使得开发者...
本项目“Delphi仿系统计算器”旨在重现Windows XP自带的标准型计算器功能,帮助开发者学习和理解Delphi的基本用法以及如何构建桌面应用。 首先,让我们探讨Delphi的界面设计。在Delphi中,用户界面是通过组件...
这些数据可以用于控制逆变器的开关元件(如IGBT或MOSFET),从而在负载上重现期望的正弦波电压或电流。 ### SPWM的优势 1. **高效能**:SPWM技术允许逆变器以接近最佳效率运行,因为它能减少谐波失真并提高功率...
在本项目中,我们将探讨如何使用MATLAB来实现Copula函数进行二维联合重现期(Joint Return Period,JRP)的计算。联合重现期是指在给定的联合分布下,同时观察到两个或多个事件的概率低至一定程度时,预期需要等待的...
结合算筹和计算器进行教学,可以采用多种方法,如历史场景重现、实物演示、互动讨论等,让学生在实践中学习,体验数学的发展历程。例如,在教学中可以首先使用算筹进行基础计算练习,然后再引入计算器完成相同或更...
在气象学中,重现期是一种重要的统计概念,用于评估极端天气事件发生的频率。例如,我们可能会说某地每50年出现一次特大洪水,这里的“50年”就是洪水的重现期。本资料包提供了四种不同的MATLAB代码,帮助用户进行...
这个压缩包“IOS应用源码之仿iOS原生计算器.zip”包含了一个iOS应用项目,该项目的目标是重现苹果设备上的计算器的功能和界面。让我们深入探讨一下这个项目可能涉及的关键知识点。 首先,我们要关注的是iOS开发的...
2. 日期和时间的设置:教学目标之一是让学生能够设置电脑系统的时间,例如将日期设置为2001年7月13日22点08分,以此重现北京申奥成功的时刻。教师应强调操作步骤,并复习删除键和退格键的区别。 3. 使用计算器进行...
Java 实现的模拟Windows计算器是一个基于Java编程语言开发的应用程序,它旨在重现Windows操作系统中内置计算器的基本功能。这个项目不仅提供了基本的数学运算,如加、减、乘、除,还允许用户自定义字体和颜色,以...
EasyFit是一款强大的统计分析工具,特别适用于对降水数据或其他环境数据进行频率分析,以计算重现期。重现期是指某一特定量级的事件在一定时间内平均出现一次的概率,比如10年一遇的降雨量,意味着平均每10年会有一...
2. **64KB字节自然书写统计数据多步重现**:64KB的数据存储能力意味着计算器可以保存一定量的历史数据或中间结果。自然书写统计数据可能是指它支持输入和显示类似手写笔迹的数学表达式,使得输入更直观。多步重现则...
它负责将音频信号按照频率范围分成不同的部分,分别馈送到不同单元(如低音喇叭、中音喇叭和高音喇叭)进行播放,以实现全频段的清晰重现。在分频器中,空芯电感是一种常见的元件,其作用是调整和滤波信号,确保每个...
夏日重现是一部广受欢迎的日式漫画作品,其全称为《夏日重现》(Natsumi Re:Visitors)。这部漫画由田中靖规创作,讲述了主角本田悟郎在经历一次意外后,回到了过去的一个夏天,试图解开一系列神秘事件的故事。漫画...
通过精确地运用绘图命令,他将奥运五环中每个环的大小、颜色和位置进行了详细的设定,从而在图形计算器上重现了这一世界性盛会的标志。 除了绘制图案之外,王力博同学还深入探索了图形计算器编程的另一个重要应用...