📄 calculator.java
字号:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*本计算器只实现了整数的加减乘除以及C键和CE键的功能,C表示关闭计算机CE表示清零*/
import javax.swing.*;
public class Calculator {
public JFrame f = new JFrame();
public JPanel p = new JPanel();
public JPanel p1 = new JPanel();
public JPanel p2 = new JPanel();
public JPanel p5 = new JPanel();
public JPanel p6 = new JPanel();
public JPanel p7 = new JPanel();
public JPanel p8 = new JPanel();
public JLabel lb2 = new JLabel();
public JTextField tf = new JTextField("",20);
public JButton b2 = new JButton("MC");
public JButton b3 = new JButton("MR");
public JButton b4 = new JButton("MS");
public JButton b5 = new JButton("M+");
public JButton b6 = new JButton("Backspace");
public JButton b7 = new JButton(" CE ");
public JButton b8 = new JButton(" C ");
public String name[] = {"0","1","2","3","4","5","6","7","8","9"};
public JButton bp = new JButton("+");
public JButton be = new JButton("=");
public JButton me = new JButton("-");
public JButton ce = new JButton("*");
public JButton de = new JButton("/");
public JButton te = new JButton(" % ");
public JButton sq = new JButton("sqrt");
public JButton ds = new JButton("1/x");
public JButton si = new JButton("sin");
public JButton co = new JButton("cos");
public JButton ta = new JButton("tan");
public JButton ex = new JButton("exp");
public JButton jj = new JButton("+/-");
public JButton di = new JButton(" . ");
public JButton lg = new JButton("log10");
public JMenuItem mi1 = new JMenuItem("编辑");
public JMenuItem mi2 = new JMenuItem("查看");
public JMenuItem mi3 = new JMenuItem("帮助");
Computer c = new Computer();
public JButton button[] = new JButton[name.length];
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String f1 = tf.getText();
Double i =Double.parseDouble(f1);
tf.setText("0");
c.sign(e.getActionCommand(), i);
}
}
class MyActionListener2 implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String f1 = tf.getText();
Double i =Double.parseDouble(f1);
c.sign(e.getActionCommand(), i);
tf.setText(""+c.computer2());
}
}
public Calculator(){
f.setSize(450,420);
f.add(p,new BorderLayout().NORTH);
f.setResizable(false);
f.add(p1,new BorderLayout().WEST);
f.add(p2,new BorderLayout().CENTER);
p2.add(p5,new BorderLayout().NORTH);
p5.add(p7,new BorderLayout().NORTH);
p5.add(p8,new BorderLayout().EAST);
p2.add(p6,new BorderLayout().CENTER);
p1.setLayout(new GridLayout(5,1,3,3));
p1.add(lb2);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
float rr = (float)Math.random();
float gg = (float)Math.random();
float bb = (float)Math.random();
p1.setBackground(new Color(rr,gg,bb));
p2.setBackground(new Color(rr,gg,bb));
p.setLayout(new GridLayout(1,3,2,2));
p.add(mi1);
p.add(mi2);
p.add(mi3);
p7.add(tf);
p8.setLayout(new GridLayout(3,1));
p8.add(b6);
p8.add(b7);
p8.add(b8);
for(int i = 0;i < name.length ;i++){
button[i] = new JButton(name[i]);
}
p6.setBackground(new Color(rr,gg,bb));
p6.setLayout(new GridLayout(5,5,14,24));
p6.add(button[7]);
p6.add(button[8]);
p6.add(button[9]);
p6.add(de);
p6.add(sq);
p6.add(button[4]);
p6.add(button[5]);
p6.add(button[6]);
p6.add(ce);
p6.add(te);
p6.add(button[1]);
p6.add(button[2]);
p6.add(button[3]);
p6.add(me);
p6.add(ds);
p6.add(button[0]);
p6.add(jj);
p6.add(di);
p6.add(bp);
p6.add(be);
p6.add(si);
p6.add(co);
p6.add(ta);
p6.add(ex);
p6.add(lg);
p.setBackground(Color.black);
f.setVisible(true);
//================windowListener===========================
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1);
}
});
//================BackSpace的响应============================
b6.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
String s = tf.getText();
String ss = tf.getText().substring(0, s.length()-1);
tf.setText(ss);
}
});
//=============数字键0到9的响应==============================
for(int i = 0;i < name.length;i++){
button[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s = e.getActionCommand();
String v = tf.getText();
if(v.equals("0")){
tf.setText(s);
}
else{
tf.setText(v + s);
}
}
});
}
//================点的响应======================================
di.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s = e.getActionCommand();
String v = tf.getText();
if(v.equals("0")){
tf.setText(s);
}
else{
if(v.contains(".")&&s.equals(s)){
tf.setText(v);
}else {
tf.setText(v + ".");
}
}
}
});
//==============C键与CE键的响应=================================
b7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
tf.setText("0");
}
});
b8.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
tf.setText("");
}
});
//============整数的加减乘除响应===============================
MyActionListener ma = new MyActionListener();
bp.addActionListener(ma);
me.addActionListener(ma);
de.addActionListener(ma);
ce.addActionListener(ma);
te.addActionListener(ma);
//==========一元运算符的响应===================================
MyActionListener2 ma1 = new MyActionListener2();
ds.addActionListener(ma1);
sq.addActionListener(ma1);
si.addActionListener(ma1);
co.addActionListener(ma1);
ta.addActionListener(ma1);
ex.addActionListener(ma1);
lg.addActionListener(ma1);
jj.addActionListener(ma1);
//=============等号响应======================================
be.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s = e.getActionCommand();
String f2 = tf.getText();
Double i = Double.parseDouble(f2);
double r = c.compute(i);
tf.setText(""+r);
}
});
}
//================main方法========================================
public static void main(String args[]){
Calculator cal = new Calculator();
}
}
//================类Computer=======================================
class Computer{
public double f1;
public String sign;
//==============两元运算的实现=======================================
public double compute(double f2){
if(sign != null){
if(sign.equals("+")){
double r = f1 + f2;
f1 = 0;
sign = null;
return r;
}
if(sign.equals("-")){
double r = f1-f2;
f1 = 0;
sign = null;
return r;
}
if(sign.equals("*")){
double r = f1*f2;
f1 = 0;
sign = null;
return r;
}
if(sign.equals("/")){
double r = f1/f2;
f1 = 0;
sign = null;
return r;
}
if(sign.equals("%")){
double r = f1%f2;
f1 = 0;
sign = null;
return r;
}
}
return 0;
}
//===============一元运算符的实现====================================
public double computer2(){
double r = 0;
if(sign.equals("1/x")){
r = 1/f1;
}
if(sign.equals("sqrt")){
r = Math.sqrt(f1);
}
if(sign.equals("sin")){
r = Math.sin(f1);
}
if(sign.equals("cos")){
r = Math.cos(f1);
}
if(sign.equals("tan")){
r = Math.tan(f1);
}
if(sign.equals("exp")){
r = Math.exp(f1);
}
if(sign.equals("log10")){
r = Math.log10(f1);
}
if(sign.equals("+/-")){
r = -f1;
}
return r;
}
public void sign(String s, double f1){
this.sign = s;
this.f1 = f1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -