JAVA布局 简易计算机的java程序

JAVA布局 简易计算机的java程序

在这里插入图片描述

源代码

package test;

import javax.swing.JFrame;

import test.Calculator.ArithmaticListener;
import test.Calculator.CleanBtnActionListener;
import test.Calculator.NumberInputListener;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.io.*;
public class Calculator extends JFrame {
	//按钮
	JButton button,button0,button1,button2,button3,button4;
	JButton button5,button6,button7,button8,button9;
	JButton buttonAdd,buttonMinus,buttonMul,buttonDivide;
	JButton buttonDot,buttonEqual;
	JTextField text;//文本框
	double num=0;//计算结果
	boolean flag=true;//判断
	boolean start=true;
	String str="=";//运算符号
	//JPanel面板
	JPanel panel,panel1;
	public Calculator (String s,int x,int y,int w,int h){
		init(s);
		setLocation(x,y);
		setSize(w,h);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	void init(String s) {
		setTitle(s);
		setLayout(new FlowLayout());
		text = new JTextField(11);
		text.setHorizontalAlignment(JTextField.LEFT);
		text.setEditable(false);
		add(text);
		
		button=new JButton("C");
		button.addActionListener(new CleanBtnActionListener());
	    
		button7=new JButton("7");
		button7.addActionListener(new NumberInputListener());
		
		button8=new JButton("8");
		button8.addActionListener(new NumberInputListener());
		
		button9=new JButton("9");
		button9.addActionListener(new NumberInputListener());
		
		buttonAdd=new JButton("+");
		buttonAdd.addActionListener(new ArithmaticListener());
		
		button4=new JButton("4");
		button4.addActionListener(new NumberInputListener());
		
		button5=new JButton("5");
		button5.addActionListener(new NumberInputListener());
		
		button6=new JButton("6");
		button6.addActionListener(new NumberInputListener());
		
		buttonMinus=new JButton("-");
		buttonMinus.addActionListener(new ArithmaticListener());
		
		button1=new JButton("1");
		button1.addActionListener(new NumberInputListener());
		
		button2=new JButton("2");
		button2.addActionListener(new NumberInputListener());
		
		button3=new JButton("3");
		button3.addActionListener(new NumberInputListener());
		
		buttonMul=new JButton("*");
		buttonMul.addActionListener(new ArithmaticListener());
		
		button0=new JButton("0");
		button0.addActionListener(new NumberInputListener());
		
		buttonDot=new JButton(".");
		buttonDot.addActionListener(new NumberInputListener());
		
		buttonDivide=new JButton("/");
		buttonDivide.addActionListener(new ArithmaticListener());
		
		buttonEqual=new JButton("=");
		buttonEqual.addActionListener(new ArithmaticListener());
		
		panel1=new JPanel();
		panel1.setLayout(new GridLayout(1, 2));
		panel1.add(button);
		add(panel1,BorderLayout.NORTH);
		pack();
		
		panel=new JPanel();
		panel.setLayout(new GridLayout(4, 4,3,3));//4*4的网格布局
		 
		panel.add(button7);
		panel.add(button8);
		panel.add(button9);
		panel.add(buttonAdd);
		
		panel.add(button4);
		panel.add(button5);
		panel.add(button6);
		panel.add(buttonMinus);
		
		panel.add(button1);
		panel.add(button2);
		panel.add(button3);
		panel.add(buttonMul);
		
		panel.add(button0);
		panel.add(buttonDot);
		panel.add(buttonDivide);
		panel.add(buttonEqual);
		add(panel,BorderLayout.CENTER);
		pack();
	}
	public class CleanBtnActionListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
           text.setText("0.0");
           flag=true;
           num=0;
           str="=";
		}
	}
	public class NumberInputListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			String ans=e.getActionCommand();
			if(flag) {
				text.setText(ans);
				flag=false;
			}
			else {
				text.setText(text.getText()+ans);
			}

		}

	}//
	public class ArithmaticListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			flag=true;
			String s=e.getActionCommand();
			double ans=Double.parseDouble(text.getText());
			if(str.equals("+")) {
				num=num+ans;
			}
			else if(str.equals("-")) {
				num=num-ans;
			}
			else if(str.equals("*")) {
				num*=ans;
			}
			else if(str.equals("/")) {
				num/=ans;
			}
			else if(str.equals("=")) {
				num=ans;
			}
			text.setText(""+num);
			str=s;
		}
	}
}
package test;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calculator ca =new Calculator("计算器",5,5,200,200);

	}

}

该代码的四则运算有时候会出bug,后期在修改上传,望大家给出宝贵意见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值