目录

一、系统设计

1.1 总体目标

1.2 主体功能介绍

二、项目详细设计

2.1 界面设计

2.2 主体类

2.3 数字按钮设计

2.4 功能按钮设计

三、整体代码

四、运行结果


 一、系统设计

1.1 总体目标

  • 具有基本的数学运算功能,如加减乘除等。
  • 界面上方有一个文本输入框,用户输入操作数并展示最终的运算结果。
  • 用户仅可以利用鼠标点击数值或操作符按键完成计算的输入,不能通过键盘进行输入。

1.2 主体功能介绍

  • 按下数字键,在文本框上会显示数字。
  • 按下数字键和符号按键,能进行加减乘除运算。
  • 按下清除键,文本框中的数据将被全部清除。

二、项目详细设计

2.1 界面设计

        总体界面采用空布局的方式,调用每个组件中的setBounds()方法来指定每一个组件的位置。

2.2 主体类

        项目中的主体类为Calculate类,继承JFrame类和ActionListener接口,并实现actionPerformed()方法,用来获取事件对象。

        在Calculate类中主要用来实现程序的主题框架,如创建面板、布局方式、窗口属性设置等,其参考代码如下:

public calculate() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("计算器实战");
		setBounds(100,100,400,250);
		contentPane = new JPanel();//创建面板
		contentPane.setBorder(new EmptyBorder(5,5,5,5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		textField = new JTextField();//创建输入框,用来输入数据
		textField.setBounds(100, 30, 240, 20);
		contentPane.add(textField);
		textField.setColumns(10);
		textField.setEditable(false);//设定输入框不能手动输入
}

        在项目中,main()方法用来创建Calculate的对象,并且将Frame设置为可见。其目的是能够使用户看到设计好的界面,具体内容如下:

public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {

		@Override
		public void run() {
			// TODO 自动生成的方法存根
			try {
				calculate frame = new calculate();//创建窗口
				frame.setVisible(true);
			}catch(Exception e) {
				e.printStackTrace();
			}
		}			
	});
}

2.3 数字按钮设计

        对于数字按钮0-9来说,其作用是将对应的数字输入到输入框textField中,因此在创建时需要同时指定监听事件,实现数字的添加。数字按钮7的参考代码如下:

button_7 = new JButton("7");//创建数字按钮7
button_7.addActionListener(new ActionListener() {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		textField.setText(textField.getText()+7);
	}
			
});
button_7.setBounds(104, 99, 50, 25);
contentPane.add(button_7);

2.4 功能按钮设计

        功能按钮需要添加对应的功能。例如加法按钮,需要完成第一次输入的数值和第二次输入的数值之和,并且要将运算结果显示到文本框中,参考代码如下:

button_add = new JButton("+");//创建加法按钮
	button_add.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO 自动生成的方法存根
			flag = 0;
			number1 = Integer.parseInt(textField.getText());
			textField.setText(null);				
		}
			
	});		
button_add.setBounds(104, 66, 50, 23);
contentPane.add(button_add);

        对于其他的运算按钮,其操作大体相同。对于等号按钮来说,需要判断输入的符号是何种操作符,并且进行计算和结果展示,参考代码如下:

button_eql = new JButton("=");//创建等号按钮
	button_eql.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO 自动生成的方法存根
			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_eql.setBounds(286, 102, 50,25);
contentPane.add(button_eql);

        在等号按钮的监听事件中,使用flag变量来标识进行何种操作,并将计算结果展示在输入框中,从而完成整个运算操作。

三、整体代码

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

import java.awt.event.*;

public class calculate extends JFrame{
	int number1;//保存第一个输入数
	int number2;//保存第二个输入数
	int flag;//保存进行何种操作
	int result;//保存执行结果
	private JPanel contentPane;
	private JTextField textField;
	private JButton button_0;
	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_sub;//减法
	private JButton button_div;//除法
	private JButton button_eql;//等号
	private JButton button_add;//加法
	private JButton button_mul;//乘法
	private JButton btnClear;//清除
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {

			@Override
			public void run() {
				// TODO 自动生成的方法存根
				try {
					calculate frame = new calculate();//创建窗口
					frame.setVisible(true);
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
			
		});
	}
	
	public calculate() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("计算器实战");
		setBounds(100,100,400,250);
		contentPane = new JPanel();//创建面板
		contentPane.setBorder(new EmptyBorder(5,5,5,5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		textField = new JTextField();//创建输入框,用来输入数据
		textField.setBounds(100, 30, 240, 20);
		contentPane.add(textField);
		textField.setColumns(10);
		textField.setEditable(false);//设定输入框不能手动输入
		
		button_sub = new JButton("-");//创建减法按钮
		button_sub.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				flag = 1;
				number1 = Integer.parseInt(textField.getText());
				textField.setText(null);				
			}
			
		});		
		button_sub.setBounds(164, 66, 52, 23);
		contentPane.add(button_sub);
		
		button_div = new JButton("/");//创建除法按钮
		button_div.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				flag = 3;
				number1 = Integer.parseInt(textField.getText());
				textField.setText(null);				
			}
			
		});		
		button_div.setBounds(286, 66, 52, 23);
		contentPane.add(button_div);
		
		button_mul = new JButton("*");//创建乘法按钮
		button_mul.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				flag = 2;
				number1 = Integer.parseInt(textField.getText());
				textField.setText(null);				
			}
			
		});		
		button_mul.setBounds(226, 66, 52, 23);
		contentPane.add(button_mul);
		
		button_add = new JButton("+");//创建加法按钮
		button_add.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				flag = 0;
				number1 = Integer.parseInt(textField.getText());
				textField.setText(null);				
			}
			
		});		
		button_add.setBounds(104, 66, 50, 23);
		contentPane.add(button_add);	
		
		button_1 = new JButton("1");//创建数字按钮1
		button_1.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+1);
			}
			
		});
		button_1.setBounds(104, 165, 50, 25);
		contentPane.add(button_1);
		
		button_2 = new JButton("2");//创建数字按钮2
		button_2.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+2);
			}
			
		});
		button_2.setBounds(164, 165, 50, 25);
		contentPane.add(button_2);
		
		button_3 = new JButton("3");//创建数字按钮3
		button_3.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+3);
			}
			
		});
		button_3.setBounds(226, 165, 50, 25);
		contentPane.add(button_3);
		
		button_4 = new JButton("4");//创建数字按钮4
		button_4.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+4);
			}
			
		});
		button_4.setBounds(104, 133, 50, 25);
		contentPane.add(button_4);
		
		button_5 = new JButton("5");//创建数字按钮5
		button_5.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+5);
			}
			
		});
		button_5.setBounds(164, 133, 50, 25);
		contentPane.add(button_5);
		
		button_6 = new JButton("6");//创建数字按钮6
		button_6.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+6);
			}
			
		});
		button_6.setBounds(226, 133, 50, 25);
		contentPane.add(button_6);
		
		button_7 = new JButton("7");//创建数字按钮7
		button_7.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+7);
			}
			
		});
		button_7.setBounds(104, 99, 50, 25);
		contentPane.add(button_7);
		
		button_8 = new JButton("8");//创建数字按钮8
		button_8.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+8);
			}
			
		});
		button_8.setBounds(164, 99, 50, 25);
		contentPane.add(button_8);
		
		button_9 = new JButton("9");//创建数字按钮9
		button_9.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+9);
			}
			
		});
		button_9.setBounds(226, 99, 50, 25);
		contentPane.add(button_9);
		
		button_0 = new JButton("0");//创建数字按钮0
		button_0.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				textField.setText(textField.getText()+0);
			}
			
		});
		button_0.setBounds(286, 165, 50, 23);
		contentPane.add(button_0);
		
		button_eql = new JButton("=");//创建等号按钮
		button_eql.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				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_eql.setBounds(286, 102, 50,25);
		contentPane.add(button_eql);
		
		btnClear = new JButton("CE");//创建清空按钮
		btnClear.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				number1 = 0;
				number2 = 0;
				result = 0;
				textField.setText(null);
			}
			
		});
		btnClear.setBounds(286,134,50,25);
		contentPane.add(btnClear);
	}
	
}

四、运行结果

java 计算器应用 java计算器功能介绍_自动生成