用Java写的一个计算器,如下图:
代码:
package Node;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class calculator extends JFrame implements ActionListener{
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
,b12,b13,b14,b15,b16,b17,b18,b19,b20;
private JTextArea text=new JTextArea(3,20);
private JPanel p=new JPanel();
private double sum=0;
private double num1,num2;
private String s;
private int x;
private boolean flag=true,flag1=false,flag2=false,flag3=false,
flag4=true;
JFrame frame=new JFrame("计算器");
public calculator(){
p.setLayout(new GridLayout(5,4));
b1=new Button("c");
b1.setBackground(Color.green);
p.add(b1);
p.add(b2=new Button("<-"));
p.add(b3=new Button("%"));
p.add(b4=new Button("/"));
p.add(b5=new Button("7"));
p.add(b6=new Button("8"));
p.add(b7=new Button("9"));
p.add(b8=new Button("*"));
p.add(b9=new Button("4"));
p.add(b10=new Button("5"));
p.add(b11=new Button("6"));
p.add(b12=new Button("-"));
p.add(b13=new Button("1"));
p.add(b14=new Button("2"));
p.add(b15=new Button("3"));
p.add(b16=new Button("+"));
p.add(b17=new Button("00"));
p.add(b18=new Button("0"));
p.add(b19=new Button("."));
b20=new Button("=");
b20.setBackground(Color.red);
p.add(b20);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this);
b20.addActionListener(this);
frame.add(text,BorderLayout.PAGE_START);
frame.add(p,BorderLayout.CENTER);
frame.setSize(300,250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
try{
if(e.getSource()==b1){//c
s=null;
text.setText(null);
flag=true;
flag1=false;
flag2=false;
flag3=false;
flag4=true;
}else if(e.getSource()==b2){//<-
if(text.getText().length()>0){//在字符长度小于0时是不能操作的
text.setText(text.getText().substring(0,text.getText().length()-1));
}
else{
text.setText("");
}
}else if(e.getSource()==b3){//%
if(flag1==true&&flag3==true&&text.getText().length()>0){
s=text.getText();
num1=Double.parseDouble(s);
text.setText(null);
s=null;
x=0;
flag=true;
flag1=true;
flag3=false;
flag4=false;
}
}else if(e.getSource()==b4){// (/)
if(flag1==true&&flag3==true&&text.getText().length()>0){
s = text.getText();
num1=Double.parseDouble(s);
text.setText(null);
s=null;
x=1;
flag=true;
flag3=false;
flag4=false;
}
}else if(e.getSource()==b5){//7
if(flag==true){
s = text.getText();
text.setText(s+"7");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b6){//8
if(flag==true){
s = text.getText();
text.setText(s+"8");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b7){//9
if(flag==true){
s = text.getText();
text.setText(s+"9");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b8){//*
if(flag1==true&&flag3==true&&text.getText().length()>0){
s = text.getText();
num1=Double.parseDouble(s);
text.setText(null);
s=null;
x=2;
flag=true;
flag3=false;
flag4=false;
}
}else if(e.getSource()==b9){//4
if(flag==true){
s = text.getText();
text.setText(s+"4");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b10){//5
if(flag==true){
s = text.getText();
text.setText(s+"5");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b11){//6
if(flag==true){
s = text.getText();
text.setText(s+"6");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b12){//-
if(flag1==true&&flag3==true&&text.getText().length()>0){
s = text.getText();
num1=Double.parseDouble(s);
text.setText(null);
s=null;
x=3;
flag=true;
flag3=false;
flag4=false;
}
}else if(e.getSource()==b13){//1
if(flag==true){
s = text.getText();
text.setText(s+"1");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b14){//2
if(flag==true){
s = text.getText();
text.setText(s+"2");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b15){//3
if(flag==true){
s = text.getText();
text.setText(s+"3");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b16){//+
if(flag1==true&&flag3==true&&text.getText().length()>0){
s = text.getText();
num1=Double.parseDouble(s);
text.setText(null);
s=null;
x=4;
flag=true;
flag3=false;
flag4=false;
}
}else if(e.getSource()==b17){//00
if(flag==true&&flag2==true){
s = text.getText();
text.setText(s+"00");
flag1=true;
}
}else if(e.getSource()==b18){//0
if(flag==true){
s = text.getText();
text.setText(s+"0");
flag1=true;
flag3=true;
}
}else if(e.getSource()==b19){//(.)
if(flag==true){
s=text.getText();
text.setText(s+".");
flag1=true;
flag2=true;
flag3=true;
}
}else if(e.getSource()==b20){//=
if(flag==true&&flag1==true&&flag3==true&&flag4==false){//由操作数,运算符,共同控制输出符号
s=text.getText();
num2=Double.parseDouble(s);
switch(x){
case 0://%
text.setText(""+(num1%num2));break;
case 1://(/)
text.setText(""+(num1/num2));break;
case 2://*
text.setText(""+(num1*num2));break;
case 3://-
text.setText(""+(num1-num2));break;
case 4://+
text.setText(""+(num1+num2));break;
}
flag=false;
flag4=true;
}
}
}catch(Exception e1){
JOptionPane.showMessageDialog(this,"请正确操作","error",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
public static void main(String[] args) {
new calculator();
}
}
文件下载地址://download.csdn.net/download/user_name_CSDN/12029203