📄 caculator.java
字号:
package caculator;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.*;
public class caculator
{
public static void main(String[] args)
{
SimpleFrame frame = new SimpleFrame();
//设置用户关闭框架时的响应动作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//显示该框架
frame.show();
}
public caculator() {
}
}
class SimpleFrame extends JFrame
{
public SimpleFrame()
{
//设置框架大小
setSize(WIDTH, HEIGHT);
setTitle("BorderLayoutTest");
//建立容纳按钮的面板
ButtonPanel bPanel = new ButtonPanel();
//将按钮面板和文本框面板置于框架中
Container contentPane = getContentPane();
contentPane.add(bPanel);
}
public static final int WIDTH = 200;
public static final int HEIGHT = 245;
}
class ButtonPanel extends JPanel implements ActionListener
{
public ButtonPanel()
{
ExpressField=new JTextField("",15);
add(ExpressField);
InputField=new JTextField("",10);
add(InputField);
ClearButton=new JButton("CE");
add(ClearButton);
ClearButton.addActionListener(this);
//创建按钮
NumButton=new JButton[10];
for(int i=0;i<10;i++)
{
NumButton[i]=new JButton(String.valueOf(i));
add(NumButton[i]);
NumButton[i].addActionListener(this);
}
ActionButton=new JButton[6];
ActionButton[0] = new JButton("+");
ActionButton[1] = new JButton("-");
ActionButton[2] = new JButton("*");
ActionButton[3] = new JButton("/");
ActionButton[4] = new JButton(".");
ActionButton[5] = new JButton("=");
for(int j=0;j<6;j++)
{
add(ActionButton[j]);//将按钮加入panel
ActionButton[j].addActionListener(this); //注册监听器
}
}
/*
public void paintComponent(Graphics g)
{
super.paintComponent(g);
//显示用户的点击操作
g.drawString("您点击的是:" , 100, 120);
}
*/
public void actionPerformed(ActionEvent event)
{
if(ClearSign){ExpressField.setText("");InputField.setText(""); ClearSign=false;Text+=".";First=0;Second=0;Third=0;OperFirst="*";OperSecond="+";Text="";Express="";}
Object source = event.getSource();
if (source == ClearButton){Text+=".";First=0;Second=0;Third=0;OperFirst="*";OperSecond="+";Text="";Express="";}
if (source == NumButton[0]){Text+="0";Express+="0";}
if (source == NumButton[1]){Text+="1";Express+="1";}
if (source == NumButton[2]){Text+="2";Express+="2";}
if (source == NumButton[3]){Text+="3";Express+="3";}
if (source == NumButton[4]){Text+="4";Express+="4";}
if (source == NumButton[5]){Text+="5";Express+="5";}
if (source == NumButton[6]){Text+="6";Express+="6";}
if (source == NumButton[7]){Text+="7";Express+="7";}
if (source == NumButton[8]){Text+="8";Express+="8";}
if (source == NumButton[9]){Text+="9";Express+="9";}
if (source == ActionButton[0]){Third=Float.parseFloat(Text);
switch(Compare(OperFirst,OperSecond))
{
case 0:
case 1:First=operation(First,OperFirst,Second);Second=Third;OperFirst=OperSecond;break;
case -1:Second=operation(Second,OperSecond,Third);break;
}
OperSecond="+";Text="";Express+="+";Third=0;
}
if (source == ActionButton[1])
{Third=Float.parseFloat(Text);
switch(Compare(OperFirst,OperSecond))
{
case 0:
case 1:First=operation(First,OperFirst,Second);Second=Third;OperFirst=OperSecond;break;
case -1:Second=operation(Second,OperSecond,Third);break;
}
OperSecond="-";Text="";Express+="-";Third=0;
}
if (source == ActionButton[2])
{
Third=Float.parseFloat(Text);
switch(Compare(OperFirst,OperSecond))
{
case 0:
case 1:First=operation(First,OperFirst,Second);Second=Third;OperFirst=OperSecond;break;
case -1:Second=operation(Second,OperSecond,Third);break;
}
OperSecond="*";Text="";Express+="*";Third=0;
}
if (source == ActionButton[3])
{Third=Float.parseFloat(Text);
switch(Compare(OperFirst,OperSecond))
{
case 0:
case 1:First=operation(First,OperFirst,Second);Second=Third;OperFirst=OperSecond;break;
case -1:Second=operation(Second,OperSecond,Third);break;
}
OperSecond="/";Text="";Express+="/";Third=0;
}
if (source == ActionButton[4]){Express+=".";Text+=".";}
if (source == ActionButton[5])
{
Third=Float.parseFloat(Text);
switch(Compare(OperFirst,OperSecond))
{
case 0:
case 1:First=operation(First,OperFirst,Second);Second=Third;OperFirst=OperSecond;break;
case -1:Second=operation(Second,OperSecond,Third);break;
}
First=operation(First,OperFirst,Second);
InputField.setText(First+"");
ClearSign=true;
First=0;Second=0;Third=0;
}
ExpressField.setText(Express);
//InputField.setText(First+OperFirst+Second+OperSecond+Third);
repaint();
}
public float operation(float a,String op,float b)
{
if(op.equals("+"))a+=b;
else if(op.equals("-"))a-=b;
else if(op.equals("*"))a*=b;
else a/=b;
return a;
}
public int Compare(String op,String oper)
{
int i=0,j=0;
if(op.equals("+"))i=0;
else if (op.equals("-"))i=1;
else if(op.equals("*"))i=2;
else i=3;
if(oper.equals("+"))j=0;
else if (oper.equals("-"))j=1;
else if(oper.equals("*"))j=2;
else j=3;
return Precede[i][j];
}
private JButton NumButton[];
private JButton ActionButton[];
private JButton ClearButton;
public String Text="";
public String Express="";
public JTextField ExpressField;
public JTextField InputField;
public float First=0,Second=0,Third=0;
public String OperFirst="+";
public String OperSecond="+";
private static final int PLUS = 0;
private static final int MINUS = 1;
private static final int MULT = 3;
private static final int DIV = 4;
private static int[][] Precede={{0,0,-1,-1},{0,0,-1,-1},{1,1,0,0},{1,1,0,0}};
public boolean ClearSign=false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -