一个java开发的超精简计算器。
2010-06-09 13:16
260 查看
初学java,写个精简的计算器,算是第一个小作业。
package com.summer.practice;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JButton;
public class MyFrame extends JFrame {
/**一个链表,每个元素都是一个String,这个链表用于存放算式的左值,符号,右值*/
LinkedList<String> linkedList;
/**三个Panel,一个是显示区,一个是数字按钮区 ,一个是运算符区 */
JPanel p1;
JPanel p2;
JPanel p3;
JTextField field;
/**构造函数,MyFrame上贴上三个Panel,每个Panel都调用各自的处理函数进行处理,布局*/
public MyFrame() {
super("calculator");
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
p1 = new JPanel();
p1.setBounds(0, 0, 300, 30);
p1_layout();
p2 = new JPanel();
p2_layout();
p2.setBounds(0, 30, 200, 200);
p3 = new JPanel();
p3_layout();
p3.setBounds(230, 30, 150, 200);
setLayout(null);
add(p1);
add(p2);
add(p3);
setVisible(true);
linkedList = new LinkedList<String>();
}
/**第3个Panel,上面添加的运算符,以及每一个运算符被按下时的监听器*/
private void p3_layout() {
JButton bt_add = new JButton("+");
bt_add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("+");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("+");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_sub = new JButton("-");
bt_sub.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("-");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("-");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_mul = new JButton("*");
bt_mul.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("*");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("*");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_div = new JButton("/");
bt_div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("/");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("/");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_equ = new JButton("=");
bt_equ.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (linkedList.size() == 3) {
operate(linkedList);
field.setText(linkedList.getFirst());
}
}
});
JButton bt_clr = new JButton("C");
bt_clr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
linkedList.removeAll(linkedList);
field.setText("0");
}
});
p3.setLayout(new GridLayout(3, 2));
p3.add(bt_add);
p3.add(bt_sub);
p3.add(bt_mul);
p3.add(bt_div);
p3.add(bt_equ);
p3.add(bt_clr);
}
/**operate函数用于把linkedList中的算式计算出来,如x+y,因x+y=z,直接把z存进去*/
protected void operate(LinkedList<String> linkedList) {
char op = linkedList.get(1).charAt(0);
switch (op) {
case '+':
double left = Double.parseDouble(linkedList.getFirst());
double right = Double.parseDouble(linkedList.get(2));
double result = left + right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '-':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left - right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '*':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left * right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '/':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left / right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
}
}
/**第2个Panel,添加数字按钮,以及它们的监听处理函数*/
private void p2_layout() {
JButton bt[] = new JButton[10];
p2.setLayout(new GridLayout(3, 4));
for (int i = 0; i < 10; i++) {
bt[i] = new JButton("" + i);
p2.add(bt[i]);
}
bt[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 0);
field.setText("" + 0);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 0);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 0);
field.setText("" + 0);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 0);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 1);
field.setText("" + 1);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 1);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 1);
field.setText("" + 1);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 1);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 2);
field.setText("" + 2);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 2);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 2);
field.setText("" + 2);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 2);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 3);
field.setText("" + 3);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 3);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 3);
field.setText("" + 3);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 3);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[4].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 4);
field.setText("" + 4);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 4);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 4);
field.setText("" + 4);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 4);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[5].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 5);
field.setText("" + 5);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 5);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 5);
field.setText("" + 5);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 5);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[6].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 6);
field.setText("" + 6);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 6);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 6);
field.setText("" + 6);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 6);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[7].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 7);
field.setText("" + 7);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 7);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 7);
field.setText("" + 7);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 7);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[8].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 8);
field.setText("" + 8);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 8);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 8);
field.setText("" + 8);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 8);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[9].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 9);
field.setText("" + 9);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 9);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 9);
field.setText("" + 9);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 9);
field.setText(linkedList.get(2));
default:
break;
}
}
});
}
/**第1个Panel,贴上显示区TextField类型的field*/
private void p1_layout() {
field = new JTextField("0", 20);
field.setHorizontalAlignment(JTextField.RIGHT);
field.setEditable(false);
p1.add(field);
}
/**主函数,用于启动程序*/
public static void main(String args[]) {
new MyFrame();
}
}
package com.summer.practice;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JButton;
public class MyFrame extends JFrame {
/**一个链表,每个元素都是一个String,这个链表用于存放算式的左值,符号,右值*/
LinkedList<String> linkedList;
/**三个Panel,一个是显示区,一个是数字按钮区 ,一个是运算符区 */
JPanel p1;
JPanel p2;
JPanel p3;
JTextField field;
/**构造函数,MyFrame上贴上三个Panel,每个Panel都调用各自的处理函数进行处理,布局*/
public MyFrame() {
super("calculator");
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
p1 = new JPanel();
p1.setBounds(0, 0, 300, 30);
p1_layout();
p2 = new JPanel();
p2_layout();
p2.setBounds(0, 30, 200, 200);
p3 = new JPanel();
p3_layout();
p3.setBounds(230, 30, 150, 200);
setLayout(null);
add(p1);
add(p2);
add(p3);
setVisible(true);
linkedList = new LinkedList<String>();
}
/**第3个Panel,上面添加的运算符,以及每一个运算符被按下时的监听器*/
private void p3_layout() {
JButton bt_add = new JButton("+");
bt_add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("+");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("+");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_sub = new JButton("-");
bt_sub.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("-");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("-");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_mul = new JButton("*");
bt_mul.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("*");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("*");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_div = new JButton("/");
bt_div.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
break;
case 1:
linkedList.add("/");
break;
case 2:
break;
case 3:
operate(linkedList);
linkedList.add("/");
field.setText(linkedList.getFirst());
break;
default:
break;
}
}
});
JButton bt_equ = new JButton("=");
bt_equ.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (linkedList.size() == 3) {
operate(linkedList);
field.setText(linkedList.getFirst());
}
}
});
JButton bt_clr = new JButton("C");
bt_clr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
linkedList.removeAll(linkedList);
field.setText("0");
}
});
p3.setLayout(new GridLayout(3, 2));
p3.add(bt_add);
p3.add(bt_sub);
p3.add(bt_mul);
p3.add(bt_div);
p3.add(bt_equ);
p3.add(bt_clr);
}
/**operate函数用于把linkedList中的算式计算出来,如x+y,因x+y=z,直接把z存进去*/
protected void operate(LinkedList<String> linkedList) {
char op = linkedList.get(1).charAt(0);
switch (op) {
case '+':
double left = Double.parseDouble(linkedList.getFirst());
double right = Double.parseDouble(linkedList.get(2));
double result = left + right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '-':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left - right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '*':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left * right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
case '/':
left = Double.parseDouble(linkedList.getFirst());
right = Double.parseDouble(linkedList.get(2));
result = left / right;
linkedList.removeAll(linkedList);
linkedList.add("" + result);
break;
}
}
/**第2个Panel,添加数字按钮,以及它们的监听处理函数*/
private void p2_layout() {
JButton bt[] = new JButton[10];
p2.setLayout(new GridLayout(3, 4));
for (int i = 0; i < 10; i++) {
bt[i] = new JButton("" + i);
p2.add(bt[i]);
}
bt[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 0);
field.setText("" + 0);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 0);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 0);
field.setText("" + 0);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 0);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 1);
field.setText("" + 1);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 1);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 1);
field.setText("" + 1);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 1);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 2);
field.setText("" + 2);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 2);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 2);
field.setText("" + 2);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 2);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 3);
field.setText("" + 3);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 3);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 3);
field.setText("" + 3);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 3);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[4].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 4);
field.setText("" + 4);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 4);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 4);
field.setText("" + 4);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 4);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[5].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 5);
field.setText("" + 5);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 5);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 5);
field.setText("" + 5);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 5);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[6].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 6);
field.setText("" + 6);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 6);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 6);
field.setText("" + 6);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 6);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[7].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 7);
field.setText("" + 7);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 7);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 7);
field.setText("" + 7);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 7);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[8].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 8);
field.setText("" + 8);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 8);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 8);
field.setText("" + 8);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 8);
field.setText(linkedList.get(2));
default:
break;
}
}
});
bt[9].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch (linkedList.size()) {
case 0:
linkedList.add("" + 9);
field.setText("" + 9);
break;
case 1:
String str = linkedList.getFirst();
linkedList.remove();
linkedList.addFirst(str + 9);
field.setText(linkedList.get(0));
break;
case 2:
linkedList.add("" + 9);
field.setText("" + 9);
break;
case 3:
str = linkedList.get(2);
linkedList.remove(2);
linkedList.add(str + 9);
field.setText(linkedList.get(2));
default:
break;
}
}
});
}
/**第1个Panel,贴上显示区TextField类型的field*/
private void p1_layout() {
field = new JTextField("0", 20);
field.setHorizontalAlignment(JTextField.RIGHT);
field.setEditable(false);
p1.add(field);
}
/**主函数,用于启动程序*/
public static void main(String args[]) {
new MyFrame();
}
}
相关文章推荐
- 一个专为移动端开发的原创即时通讯框架,超轻量级、高度提炼,完全基于UDP协议,支持iOS、Android、标准Java平台。
- webmagic的设计机制及原理-如何开发一个Java爬虫
- JaVA AWT 一个很好的计算器
- 分享一个JAVA专业接口开发利器,牛牛牛新鲜出炉!!!
- Mockito:一个强大的用于Java开发的模拟测试框架
- Mockito:一个强大的用于Java开发的模拟测试框架
- MyEclipse 下开发Java webService 和 Java webClient 的一个完整回调列子
- java组件写一个GUI 计算器
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 如何开发一个java开源框架-----Jvn框架之实现浏览器传参后台转成Bean(第四)
- 作为一个Java开发人员,有些常用的Linux命令必须掌握
- java写一个计算器
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- 一个Java开发老前辈的宝贵经验
- 浅谈:使用Java基于MVC模式开发一个简单商品管理系统
- 借助百度云中的百度人脸识别用java开发一个人脸识别
- 编写一个JAVA的队列类-Java基础-Java-编程开发
- 一个精简的计算器源码
- [转载] java web开发一个帐号同一时间只能一个人登录
- Java开发的程序之运行一个。