📄 calculation.java
字号:
//java计算器(boboojf)
import java.awt.Cursor;
import java.awt.*;
import javax.swing.*;
import java.awt.Image;
import java.awt.event.*;
class calculation extends JFrame
{
public calculation() /*构造方法*/
{
super("Java计数器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(500,350);setSize(365,233);
initTextPanel(); /*文本框*/
initControlPanel(); /*控制键*/
initKeyPanel(); /*数字和运算符*/
Container pane=getContentPane();
pane.setLayout(new BorderLayout());
pane.add(TextPanel,BorderLayout.NORTH);
pane.add(ControlPanel,BorderLayout.CENTER);
pane.add(KeyPanel,BorderLayout.SOUTH);
setResizable(false);
this.show();
}
private void initTextPanel() /*设置文本框*/
{
TextPanel=new JPanel();
JLabel labelimage = new JLabel("", icon, SwingConstants.CENTER);
labelimage.setVerticalTextPosition(JLabel.BOTTOM);
//labelimage.setBorder(BorderFactory.createLineBorder(Color.black)); //设置标签边框线;
JLabel label =new JLabel(" boboojf ");
label.setFont(font3);
label.setForeground(new Color(255,155,19));
TextPanel.setLayout(new FlowLayout());
TextPanel.setBackground(new Color(200,220,230));
Resultarea =new JTextField("0",20);
Resultarea.setForeground(Color.red);
//Resultarea.setCursor(Cursor.getSystemCustomCursor("../cc/mouse.cur"));
Resultarea.setFont(new Font("宋体",Font.BOLD,18));
Resultarea.setEditable(false);
Resultarea.setBackground(Color.white);
Resultarea.setHorizontalAlignment(JTextField.RIGHT);
TextPanel.add(labelimage);
TextPanel.add(label);
TextPanel.add(Resultarea);
}
private void initControlPanel() /*设置控制键*/
{
ControlPanel=new JPanel();
ControlPanel.setLayout(new GridLayout(1,3,5,5));
ControlPanel.setBackground(new Color(200,220,230));
JButton b1=new JButton("Backspace"); /*Backspace键*/
b1.setBackground(new Color(150,150,255));
b1.setFont(font1);
b1.setForeground(Color.white);
b1.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{String s1=Resultarea.getText();
int l=s1.length();
Resultarea.setText(s1.substring(0 ,l-1));
}
});
ControlPanel.add(b1);
JButton b2=new JButton("CE"); /*CE键*/
b2.setBackground(new Color(150,255,150));
b2.setFont(font1);
b2.setForeground(Color.red);
b2.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
FT=true;
}
});
ControlPanel.add(b2);
JButton b3=new JButton("C"); /*C键*/
b3.setBackground(new Color(255,150,150));
b3.setFont(font1);
b3.setForeground(Color.darkGray);
b3.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
pnum="";
operation="";
FT=true;
}
});
ControlPanel.add(b3);
}
private void initKeyPanel() /*设置数字键和运算符键*/
{String key[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
KeyPanel = new JPanel();
KeyPanel.setBackground(new Color(200,220,230));
KeyPanel.setLayout(new GridLayout(4,5,2,2));
for(int i=0;i<20;i++)
{
String label = key[i];
JButton b = new JButton(label);
b.setActionCommand(key[i]);
b.setBackground(Color.orange);
b.setForeground(Color.blue);
b.setFont(font2);
KeyPanel.add(b);
b.addActionListener
(new ActionListener() /*无名监听器*/
{
public void actionPerformed(ActionEvent e){Key_actionPerformed(e);}
}
);
}
}
private void voidPanel()
{voidPanel.setBackground(new Color(200,220,230));
}
public void Key_actionPerformed(ActionEvent e) /*数字键和运算符键无名监听器*/
{String s=(e.getActionCommand());
String st=Resultarea.getText();
if(s.equals("0")) /*输入数为0*/
{if(st.equals("0"))
return;
else
{if(!FT)
Resultarea.setText(st+"0");
else
Resultarea.setText("0");
}
FT=false;
return;
}
if(s.equals("+/-")) /*输入数为+/-*/
{double k=Double.parseDouble(st);
{
if(k!=0)
display(-k);
}
return;
}
if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9")) /*输入1-9*/
{if(!FT)
Resultarea.setText(st+s);
else
{ Resultarea.setText(s);
FT=false;
}
return;
}
if(s.equals(".")) /*输入小数点*/
{if(Resultarea.getText().indexOf(".")==-1) /*不存在小数点*/
{if(FT)
{Resultarea.setText("0.");
FT=false;
}
else
Resultarea.setText(st+".");
}
return;
}
FT=true; /*按下运算符,输入新的数*/
if(s.equals("="))
{
compute(s);
operation="";
}
/*条件嵌套作判断*/
else /*二目运算符号*/
{if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))
{if(operation.equals(""))
{pnum=Resultarea.getText();
operation=s;
}
else
compute(s); //调用compute()计算方法
}
else /*一目运算*/
{double count1=Double.parseDouble(st);
double d0=1/count1;
double s0=Math.sqrt(count1);
if(s.equals("sqrt"))
{
display(s0);
}
else
{if(s.equals("1/x"))
{
if(st.equals("0"))
{Resultarea.setText("除数不能为0不能为空!!");
operation="";
pnum="";
}
else
display(d0); /*求倒数*/
}
else
display(Double.parseDouble(st)/100); /*输入%,使当前显示的值除于100*/
}
}
}
}
private void compute(String s)
{ if(s.equals("=") & operation.equals(""))
{return;}
double data1=Double.parseDouble(pnum);
double data2=Double.parseDouble(Resultarea.getText());
/*加减乘除计算(if...else的嵌套判断)*/
double d1=data1+data2;
double d2=data1-data2;
double d3=data1*data2;
double d4=data1/data2;
if(operation.equals("+"))
display(d1);
else
{if(operation.equals("-"))
display(d2);
else
{if(operation.equals("*"))
display(d3);
else
if(operation.equals("/"))
{if(data2==0)
{Resultarea.setText("除数不能为0不能为空!!");
operation="";
pnum="";
return;
}
else
display(d4);
}
}
}
operation=""; /*符号为当前符*/
pnum=Resultarea.getText();/*运算数为当前文本数*/
}
public void display(double result) /*显示输出方法*/
{int a=(int)result;
if(a==result)
Resultarea.setText(String.valueOf(a));
else
Resultarea.setText(String.valueOf(result));
if(Resultarea.getText().equals("NaN"))
Resultarea.setText("输入函数无效!!");
}
private JPanel TextPanel; /*文本框棉板*/
private JTextField Resultarea; /*文本框*/
private JPanel ControlPanel; /*控制键键面板*/
private JPanel KeyPanel; /*数字键和运算符键面板*/
private JPanel voidPanel;
private Font font1=new Font("Dialog",Font.BOLD,12); /*控制键字体*/
private Font font2=new Font("Dialog",Font.BOLD,12); /*数字键和符号键字体*/
private Font font3=new Font("Dialog",Font.ITALIC+Font.BOLD,18);/* 标签 */
private String pnum=""; /*前操作数*/
private boolean FT=true; /*控制是否是新数*/
private String operation=""; /*运算符*/
private static Icon icon=new ImageIcon("../cc/boboo.gif");
//private static Cursor cur=new Cursor("../cc/mouse.cur");
public static void main(String[] args)
{
new calculation();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -