简单的Swing做的计算器

原创 2018年04月17日 16:54:18

哈哈哈,开心,第一次用所学到的知识完成了一个小小的作品吧。
本来不想学swing的,觉得没什么用,但是看了两本书都在java基础的结束讲解了swing的内容,想想还是看看吧,由于我安装了图形化操作模式,所以我直接看了事件处理部分,刚看完点击事件部分就想着是不是可以用这部分做个计算器?

想到就做!直接画图做了个框架,,如图所示,界面做好了,接下来就是功能的实现了,先想清楚操作流程:
1.输入一个数字:利用界面小键盘输入,还要显示在上面的文本框,网上查了关于button和textFile之间数据的传递的资料,直接在点击某个数字的时候进入点击事件,然后先gettext()得到文本框的数据,然后+settext()显示在文本框中,实现了数字的输入。

2.点击运算符+,-,*,/,等,那就需要在点击事件中先得到文本框的内容,赋值给number1,还要区别+,-,*,/,于是定义了一个flag,+,-,*,/,分别对应不同的值。

3.输入第二个数,和第一个数一样
4.点击=,文本框中显示结果,点击=进入点击事件,先判断之前flag的值,然后用if语句进行运算,然后把结果result显示在文本框中。

进行测试+=,但是没法进行第二次运算,于是又添加了一个AC按钮,进行清零。
整体代码如下:
package base.swing;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.naming.spi.DirStateFactory.Result;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class eventDemo1 extends JFrame {
 
 int number1;
 int number2;
 int flag;
 int result;
 private JPanel contentPane;
 private JTextField textField;
 private JButton button;
 private JButton button_1;
 private JButton button_2;
 private JButton button_3;
 private JButton button_4;
 private JButton button_5;
 private JButton button_6;
 private JButton button_7;
 private JButton button_8;
 private JButton button_9;
 private JButton button_10;
 private JButton button_11;
 private JButton button_12;
 private JButton button_13;
 private JButton button_14;
 private JButton btnClear;
 /**
  * Launch the application.
  */
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     eventDemo1 frame = new eventDemo1();
     frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }
 /**
  * Create the frame.
  */
 public eventDemo1() {
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setBounds(100, 100, 450, 300);
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);
  
  textField = new JTextField();
  textField.setBounds(104, 35, 236, 21);
  contentPane.add(textField);
  textField.setColumns(10);
  
  button = new JButton("-");
  button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    flag = 1;
    number1 = Integer.parseInt(textField.getText());
    textField.setText(null);
   }
  });
  button.setBounds(164, 66, 52, 23);
  contentPane.add(button);
  
  button_1 = new JButton("/");
  button_1.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    flag = 3;
    number1 = Integer.parseInt(textField.getText());
    textField.setText(null);
   }
  });
  button_1.setBounds(286, 66, 50, 25);
  contentPane.add(button_1);
  
  button_2 = new JButton("*");
  button_2.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    flag = 2;
    number1 = Integer.parseInt(textField.getText());
    textField.setText(null);
   }
  });
  button_2.setBounds(226, 66, 50, 23);
  contentPane.add(button_2);
  
  button_3 = new JButton("7");
  button_3.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    
    textField.setText(textField.getText()+7);
    
   }
  });
  button_3.setBounds(104, 99, 50, 25);
  contentPane.add(button_3);
  
  button_4 = new JButton("8");
  button_4.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    
    textField.setText(textField.getText()+8);
   }
  });
  button_4.setBounds(164, 99, 50, 25);
  contentPane.add(button_4);
  
  button_5 = new JButton("9");
  button_5.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+9);
   }
  });
  button_5.setBounds(226, 99, 50, 25);
  contentPane.add(button_5);
  
  button_6 = new JButton("4");
  button_6.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+4);
   }
  });
  button_6.setBounds(104, 133, 50, 25);
  contentPane.add(button_6);
  
  button_7 = new JButton("5");
  button_7.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+5);
   }
  });
  button_7.setBounds(164, 133, 50, 25);
  contentPane.add(button_7);
  
  button_8 = new JButton("6");
  button_8.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+6);
   }
  });
  button_8.setBounds(226, 133, 50, 25);
  contentPane.add(button_8);
  
  button_9 = new JButton("1");
  button_9.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+1);
   }
  });
  button_9.setBounds(104, 165, 50, 25);
  contentPane.add(button_9);
  
  button_10 = new JButton("2");
  button_10.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+2);
   }
  });
  button_10.setBounds(164, 165, 50, 25);
  contentPane.add(button_10);
  
  button_11 = new JButton("3");
  button_11.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+3);
   }
  });
  button_11.setBounds(226, 165, 50, 25);
  contentPane.add(button_11);
  
  button_12 = new JButton("=");
  button_12.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    number2 = Integer.parseInt(textField.getText());
    if(flag==0) {
     result = number1+number2;
     textField.setText(String.valueOf(result));
    }else if (flag==1) {
     result = number1-number2;
     textField.setText(String.valueOf(result));
    }
    else if (flag==2) {
     result = number1*number2;
     textField.setText(String.valueOf(result));
    }
    else if (flag==3) {
     result = number1/number2;
     textField.setText(String.valueOf(result));
    }
    
    
    
    
    
   }
  });
  button_12.setBounds(286, 102, 50, 25);
  contentPane.add(button_12);
  
  button_13 = new JButton("+");
  button_13.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    flag = 0;
    number1 = Integer.parseInt(textField.getText());
    textField.setText(null);
    
   }
  });
  button_13.setBounds(104, 66, 50, 23);
  contentPane.add(button_13);
  
  button_14 = new JButton("0");
  button_14.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    textField.setText(textField.getText()+0);
   }
  });
  button_14.setBounds(286, 165, 50, 25);
  contentPane.add(button_14);
  
  btnClear = new JButton("AC");
  btnClear.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    number1 = 0;
    number2 = 0;
    result = 0;
    textField.setText(null);
    
   }
  });
  btnClear.setBounds(286, 134, 50, 25);
  contentPane.add(btnClear);
 }
}
突然发现自己没有写注释的习惯!!!!这很不好!!!一定要改!!!

利用java的swing组件制作简易计算器

1、首先页面制作 整体的页面布局可设为空布局,上下各一个面板,其中上面面板可放入文本输入域(jtf.setHorizontalAlignment(JTextField.RIGHT);)这句代码是将...
  • gp3056
  • gp3056
  • 2017-04-18 11:52:36
  • 1218

Java swing实现简单计算器的开发

今天给大家介绍一下Java swing开发计算机的一个思路,比较简单,初学者可以借鉴下,大神请绕道。 代码实现如下: package calclutor; import java.awt.Bor...
  • llqqxf
  • llqqxf
  • 2016-07-14 14:33:08
  • 15413

使用Swing编写win7简易计算器1——页面编程

学了Java一段时日,不过都是做web方面的应用,今天决定捣鼓一下Java的图形界面开发。Java的图形开发界面GUI控件都放在javax.swing.*当中,里面图形界面需要的各种控件一应俱全,包括...
  • nidalaowo
  • nidalaowo
  • 2013-02-27 14:08:37
  • 830

swing实现计算器

代码如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Vector; pu...
  • wenzhilanyu2012
  • wenzhilanyu2012
  • 2015-04-05 16:08:09
  • 881

java中Swing做的简单计算器

  • 2009年04月09日 18:34
  • 4KB
  • 下载

Java Swing做的简易计算器

先整了一个包 package cn.cal; 包里面有两个类: 一个 Calculator extends JFrame 实现计算器的界面 一个 Calculate 实现对算术表达式的处理 ...
  • tomorrowtodie
  • tomorrowtodie
  • 2016-10-30 21:34:45
  • 1056

java swing 计算器程序

  • 2016年07月26日 08:01
  • 12KB
  • 下载

java swing实现简单的计算器源代码程序

java swing实现简单的计算器源代码程序 源代码下载地址:http://www.zuidaima.com/share/1792762695060480.htm...
  • yaerfeng
  • yaerfeng
  • 2016-05-20 09:36:33
  • 3209

Java源码-简单计算器界面的AWT实现与Swing实现之比较

AWT(Abstract Windown Toolkit)调用操作系统自身的方法呈现界面,swing则是完全由Java代码实现。 AWT实现的界面效果如下: Swing实现的界面效果如...
  • hpdlzu80100
  • hpdlzu80100
  • 2016-07-28 17:38:24
  • 2839

使用java swing仿window7标准计算器界面

①使用swing仿计算机界面,算法网上一大堆。没想到更好的,所以以后想到更简便的再补上。 ②界面比较简单,所以使用swing的空布局,绝对定位上的。有图有证据。 ③我会把实现的步骤,一步一步的展现...
  • Sherlock_Homles
  • Sherlock_Homles
  • 2014-10-12 20:09:41
  • 949
收藏助手
不良信息举报
您举报文章:简单的Swing做的计算器
举报原因:
原因补充:

(最多只允许输入30个字)