Java Swing计算器
来源:互联网 发布:什么是矩阵的特征值 编辑:程序博客网 时间:2024/05/17 08:43
最近刚看完Swing和AWT,做了一个小计算器,功能很简单,就是连续的运算还是做不了…希望大家能给我一点意见~~哈哈
我想再过段时间加入能用键盘输入的,学习键盘监听…
import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.math.BigDecimal;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;/** * * 计算器,鼠标点击可以运算 */public class CalCulator extends JFrame implements ActionListener {private Panel panel_1 = new Panel(); // 新建一个容器private Panel panel_2 = new Panel();private JTextField jf = new JTextField(30);private boolean app = true; // 用来在文本框中追加显示private String s1 = "0"; // 获取需要运算的数字private String s2 = "0"; // 存放运算后的结果private int cal = 0; // 根据点击的符号去判断运算方式,默认0:+,1:-,2:*,3:/private double d1 = 0.0;private double d2 = 0.0;public CalCulator() {super("计算器");jf.setText("0"); // 设置文本框的初始值是0jf.setEditable(false); // 设置文本框是不能编辑的jf.setHorizontalAlignment(JTextField.RIGHT); // 设置文本框文字的方向panel_1.add(jf); // 在容器1里放入文本框this.add(panel_1, BorderLayout.NORTH); // 在面板里加入容器一,位置在边框布局的北方panel_2.setLayout(new GridLayout(5, 4)); // 设置容器二的布局为网格式布局String[] name = { "backspace", "CE", "C", "+", "7", "8", "9", "-", "4","5", "6", "*", "1", "2", "3", "/", "0", "+/-", ".", "=" };JButton[] buttons = new JButton[name.length]; // 新建一个Jbutton数组for (int i = 0; i < name.length; i++) {buttons[i] = new JButton(name[i]);buttons[i].addActionListener(this);// 为按钮注册监听器,同时还要继承ActionListener接口,这是从http://www.gidforums.com/t-10898.html查到的panel_2.add(buttons[i]); // 向容器二中添加按钮}this.add(panel_2, BorderLayout.SOUTH);// 设置窗体属性this.pack();this.setVisible(true);}public void actionPerformed(ActionEvent e) {String comm = e.getActionCommand();// 得到按钮能够产生的命令if (comm.matches("//d")) { // 使用正则表达式来判断点击的是不是数字区域if (app) { // 如果app为真,代表文本框上没有数字,直接在文本框上打印数字jf.setText(comm);app = false;} else { // 当app为false时,代表文本框上已经有数字,在后面继续追加输入的数字String textStr = jf.getText();if (textStr.startsWith("0")) {jf.setText(textStr.substring(1) + comm);} else {jf.setText(textStr + comm);}}} else if (comm.equals(".")) { // 如果输入的是小数点if (jf.getText().indexOf(".") == -1 && app) { // 同上,如果之前没有小数点,在文本框添加小数点,同时将app的值设为falsejf.setText(jf.getText() + ".");app = false;} else if (app == false) { // app的值为false,代表文本框已有小数点,直接在后面追加String textStr = jf.getText();jf.setText(textStr + comm);}} else if ("+-*/".indexOf(comm) != -1) { // 如果点击的是+—*/s1 = jf.getText();d1 = Double.parseDouble(s1);if (comm.equals("+")) {cal = 0;}if (comm.equals("-")) {cal = 1;}if (comm.equals("*")) {cal = 2;}if (comm.equals("/")) {cal = 3;}jf.setText("0");} else if ("=".equals(comm)) { // 点击=s2 = jf.getText();d2 = Double.parseDouble(s2);jf.setText("");if (cal == 0) { // 实现加法double sum = d1 + d2;String sm = sum + "";jf.setText(sm);}if (cal == 1) { // 实现减法double sub = d1 - d2;String sb = sub + "";jf.setText(sb);}if (cal == 2) { // 实现乘法double mil = d1 * d2;String ml = mil + "";jf.setText(ml);}if (cal == 3) { // 实现除法double di = d1 / d2;String d = di + "";jf.setText(d);}} else if ("CE".equals(comm)) {jf.setText("0");} else if ("C".equals(comm)) {jf.setText("0");} else if ("backspace".equals(comm)) {String temp = jf.getText();if (temp.equals("")) {jf.setText("0");} else if(temp.length()>0) {jf.setText(temp.substring(0, temp.length() - 1));}} else if (comm.equals("+/-")) { // 实现+/-String temp = jf.getText();if (app) {jf.setText("-");app = false;}if (temp.startsWith("-")) {jf.setText(temp.substring(1));} else {jf.setText("-" + temp);}}}public static void main(String[] args) {new CalCulator();}}
- Java Swing计算器
- Java-Swing-计算器
- java Swing计算器
- Java swing 计算器
- java swing 计算器
- java 简易计算器Swing
- java swing实现简单计算器
- java计算器(Swing绘制界面)
- java swing示例(计算器)
- java swing入门 计算器布局
- Swing计算器
- swing计算器
- Java计算器源代码 awt+swing图形界面实现
- 用Java swing 编写简单的计算器
- java swing开发最简易计算器源代码
- 用Java swing制作简单的计算器
- Java swing实现简单计算器的开发
- Java Swing做的简易计算器
- ZOJ 1008 Gnome Tetravex
- 深入嵌入式linux知识要点
- Sql Server中判断表或者数据库是否存在
- 转 java中super 的两种用法
- 二维平面上点与线段关系的判定
- Java Swing计算器
- XML 架构定义工具 (Xsd.exe)
- C# 判断字符是否中文还是英文
- 正则表达式在字符串处理中的应用
- 简单java单例模式(单击多次,如何让窗口只显示一次)
- 現在轉行啦!!
- OpenStack之Nova的功能
- shell ubuntu
- 13种最为荒谬的编程语言