java swing实现一个简单的计算器

avatar 2017年5月18日22:15:27 评论 405 views

 

方案一(简易版)、

代码如下

  1. package com.liuyanzhao;
  2. import java.awt.FlowLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import javax.swing.JButton;
  6. import javax.swing.JComboBox;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10. import javax.swing.WindowConstants;
  11. class GUIimplements ActionListener {
  12.     JPanel panel;
  13.     JTextField textField1;
  14.     JComboBox<String> comboBox;
  15.     JTextField textField3;
  16.     JButton button;
  17.     JTextField textField4;
  18.     public GUI2() {
  19.         JFrame frame = new JFrame("简易计算器");
  20.         frame.setVisible(true);
  21.         frame.setBounds(100,100,300,100);
  22.         frame.setLayout(new FlowLayout());
  23.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  24.         panel = new JPanel();
  25.         comboBox = new JComboBox<String>();
  26.         comboBox.addItem("+");
  27.         comboBox.addItem("-");
  28.         comboBox.addItem("*");
  29.         comboBox.addItem("/");
  30.         comboBox.addItem("%");
  31.         textField1 = new JTextField(3);
  32.         textField3 = new JTextField(3);
  33.         textField4 = new JTextField(3);
  34.         textField4.setEnabled(false);
  35.         button = new JButton("=");
  36.         panel.add(textField1);
  37.         panel.add(comboBox);
  38.         panel.add(textField3);
  39.         panel.add(button);
  40.         panel.add(textField4);
  41.         button.addActionListener(this);
  42.         frame.add(panel);
  43.     }
  44.     @Override
  45.     public void actionPerformed(ActionEvent e) {
  46.         // TODO Auto-generated method stub
  47.         int x1 = Integer.parseInt(textField1.getText());
  48.         int x2 = Integer.parseInt(textField3.getText());
  49.         int result = 0;
  50.         switch (comboBox.getSelectedItem().toString()) {
  51.         case "+":
  52.             result = x1+x2;
  53.             break;
  54.         case "-":
  55.             result = x1-x2;
  56.             break;
  57.         case "*":
  58.             result = x1*x2;
  59.             break;
  60.         case "/":
  61.             result = x1/x2;
  62.             break;
  63.         case "%":
  64.             result = x1%x2;
  65.             break;
  66.         default:
  67.             break;
  68.         }
  69.         textField4.setText(result+"");
  70.     }
  71. }
  72. public class Demo2 {
  73.     public static void main(String[] args) {
  74.         new GUI2();
  75.     }
  76. }

运行结果如下

 

方案二(升级版)、

代码如下

  1. package com.liuyanzhao;
  2. import java.awt.Button;
  3. import java.awt.FlowLayout;
  4. import java.awt.GridLayout;
  5. import java.awt.TextField;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.text.DecimalFormat;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13. import javax.swing.JTextField;
  14. import javax.swing.WindowConstants;
  15. class GUIimplements ActionListener {
  16.     String arr[] = { "1""2""3""4""5""6""7""8""9""0""+""-""*""/""=" };
  17.     JButton button[] = new JButton[arr.length];
  18.     JTextField textField1;
  19.     JLabel label1;
  20.     JTextField textField2;
  21.     JLabel label2;
  22.     JTextField textField3;
  23.     JButton button_c;
  24.     boolean isOp1=true,isOp2;
  25.     public GUI3() {
  26.         JFrame frame = new JFrame("整数计算器");
  27.         frame.setLayout(new FlowLayout());
  28.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  29.         frame.setBounds(100100300200);
  30.         JPanel panel1 = new JPanel();
  31.         JPanel panel2 = new JPanel();
  32.         textField1 = new JTextField(3);
  33.         label1 = new JLabel("?");
  34.         textField2 = new JTextField(3);
  35.         label2 = new JLabel("=");
  36.         textField3 = new JTextField(6);
  37.         button_c = new JButton("C");
  38.         button_c.addActionListener(this);
  39.         panel1.add(textField1);
  40.         panel1.add(label1);
  41.         panel1.add(textField2);
  42.         panel1.add(label2);
  43.         panel1.add(textField3);
  44.         panel1.add(button_c);
  45.         panel2.setLayout(new GridLayout(3555));// 3行5列,空隙为5
  46.         for (int i = 0; i < arr.length; i++) {
  47.             button[i] = new JButton(arr[i]);
  48.             button[i].addActionListener(this);
  49.             panel2.add(button[i]);
  50.         }
  51.         frame.add(panel1);
  52.         frame.add(panel2);
  53.         frame.setVisible(true);
  54.     }
  55.     public static String compute(int x,int y,String op) {
  56.         int result=0;
  57.         DecimalFormat df = new DecimalFormat("0.0000");
  58.         if(y==0&&op.equals("/")) {
  59.             return "除零了";
  60.         }
  61.         switch (op) {
  62.         case "+":
  63.             result = x + y;
  64.             break;
  65.         case "-":
  66.             result = x - y;
  67.             break;
  68.         case "*":
  69.             result = x * y;
  70.             break;
  71.         case "/":
  72.             return df.format((x+0.0) / y);//格式化小数
  73.         }
  74.         return result+"";
  75.     }
  76.     @Override
  77.     public void actionPerformed(ActionEvent e) {
  78.         // TODO Auto-generated method stub
  79.         //判断点击的是否为数字,s1.indexOf(s2) ,字符串s2是否为s1的字符串
  80.         if("0123456789".indexOf(e.getActionCommand())>=0) {
  81.             if(isOp1&&textField1.getText().length()<3) {
  82.                 textField1.setText(textField1.getText()+e.getActionCommand());
  83.                 isOp2 = false;
  84.             }
  85.             if(!isOp1&&isOp2&&textField2.getText().length()<3) {
  86.                 textField2.setText(textField2.getText()+e.getActionCommand());
  87.             }
  88.         }
  89.         if("+-*/".indexOf(e.getActionCommand())>=0) {
  90.             label1.setText(e.getActionCommand());
  91.             isOp2 = true;
  92.             isOp1 = false;
  93.         }
  94.         if(e.getActionCommand().equals("C")) {
  95.             textField1.setText("");
  96.             textField2.setText("");
  97.             textField3.setText("");
  98.             label1.setText("?");
  99.             isOp1 = true;
  100.             isOp2 = false;
  101.         }
  102.         if(e.getActionCommand().equals("=")) {
  103.             isOp1 = false;
  104.             isOp2 = false;
  105.             textField3.setText(compute(Integer.parseInt(textField1.getText()), Integer.parseInt(textField2.getText()), label1.getText()));
  106.         }
  107.     }
  108. }
  109. public class Demo3 {
  110.     public static void main(String[] args) {
  111.         new GUI3();
  112.     }
  113. }

运行结果如下

 

本文地址:https://liuyanzhao.com/4266.html

转载请注明

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: