📄 calculator.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
////////////////////////////////////////////////////开始设计窗体的基本布局
public class Calculator extends JFrame implements ActionListener { //导入动作监听接口
private JFrame frame;
private JTextField textAnswer;
private JPanel panel, panel1, panel2, panel3,panel4;
private JTextField textMemory;
private JButton buttonBk, buttonCe, buttonC,buttonPI;
private JButton button[];
private JButton buttonxy,buttonln,buttonjie,buttonsin,buttoncos,buttontan;
//private JButton buttonMC, buttonMR, buttonMS, buttonMAdd;
private JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul, buttonDiv, buttonMod;
private JButton buttonSqrt, buttonDao, buttonEqual;
private JMenuBar mainMenu;
private JMenu editMenu, helpMenu;
private JMenuItem copyItem, pasteItem,topHelp, aboutCal;
private String Operation = null,Num=null;
private boolean start = true;
private String copy;
JTextArea help;
JScrollPane scrollHelp;
////////////////////////////////////////////////////计算器的基本构造方法
public Calculator(){
frame = new JFrame("计算器");
panel = new JPanel();
Container cont = frame.getContentPane();
cont.add(panel);
panel.setLayout(new BorderLayout());
textAnswer = new JTextField(15);
textAnswer.setText("0");
//////////////////////////////////////////定义菜单的基本功能
mainMenu = new JMenuBar();
editMenu = new JMenu("编辑(E)");
editMenu.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
copyItem = new JMenuItem("复制(C) Ctrl+C");
copyItem.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
copyItem.addActionListener(this);
pasteItem = new JMenuItem("粘贴(V) Ctrl+V");
pasteItem.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
pasteItem.addActionListener(this);
editMenu.add(copyItem);
editMenu.add(pasteItem);
helpMenu = new JMenu("帮助(H)");
helpMenu.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
topHelp = new JMenuItem("帮助主题(H)");
topHelp.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
topHelp.addActionListener(this);
help = new JTextArea(5,20);
scrollHelp = new JScrollPane(help);
help.setEditable(false);
help.append("使用简单的计算器系统\n");
help.append("1. 键入计算的第一个数字。\n");
help.append("2. 单击'+'执行加、'-'执行减、'*'执行乘或'/'执行除'PI'调用派\n");
help.append(" 单击'ln'求对数、'sin'求正弦、'cos'求余弦、'tan'正切、'x^y'再输入第个数求x的y次方.\n");
help.append("3. 输入计算的下一个数字。\n");
help.append("4. 输入所有剩余的运算符和数字。\n");
help.append("5. 单击'='。\n");
aboutCal = new JMenuItem("关于计算器(A)");
aboutCal.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
aboutCal.addActionListener(this);
helpMenu.add(topHelp);
helpMenu.addSeparator();
helpMenu.add(aboutCal);
mainMenu.add(editMenu);
mainMenu.add(helpMenu);
panel1=new JPanel();
panel.add(mainMenu, BorderLayout.NORTH);
panel.add(textAnswer, BorderLayout.CENTER);
panel.add(panel1, BorderLayout.SOUTH);
panel1.setLayout(new BorderLayout());
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
panel1.add(panel2, BorderLayout.NORTH);
panel1.add(panel4, BorderLayout.CENTER);
panel1.add(panel3, BorderLayout.SOUTH);
/////////////////////////////////////////////////////////////设计面板panel2 14
panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
panel4.setLayout(new FlowLayout(FlowLayout.LEFT));
textMemory = new JTextField(4);
textMemory.setEditable(false);
buttonBk = new JButton("Backspace");
buttonBk.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));///颜色
buttonBk.setForeground(Color.black);
buttonCe = new JButton(" CE ");
buttonCe.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonCe.setForeground(Color.black);
buttonC = new JButton(" C ");
buttonC.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonC.setForeground(Color.black);
buttonxy = new JButton(" x^y");
buttonxy.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonxy.setForeground(Color.magenta);
buttonln = new JButton(" ln");
buttonln.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonln.setForeground(Color.magenta);
buttonjie = new JButton(" n! ");
buttonjie.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonjie.setForeground(Color.magenta);
buttonsin = new JButton(" sin");
buttonsin.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonsin.setForeground(Color.magenta);
buttoncos = new JButton(" cos");
buttoncos.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttoncos.setForeground(Color.magenta);
buttontan = new JButton(" tan");
buttontan.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttontan.setForeground(Color.magenta);
buttonPI= new JButton(" PI ");
buttonPI.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonPI.setForeground(Color.magenta);
buttonBk.addActionListener(this);
buttonCe.addActionListener(this);
buttonC.addActionListener(this);
buttonxy.addActionListener(this);
buttonln.addActionListener(this);
buttonjie.addActionListener(this);
buttonsin.addActionListener(this);
buttoncos.addActionListener(this);
buttontan.addActionListener(this);
buttonPI.addActionListener(this);
panel2.add(textMemory);
panel2.add(buttonBk);
panel2.add(buttonCe);
panel2.add(buttonC);
panel2.add(buttonPI);
panel4.add(buttonxy);
panel4.add(buttonln);
panel4.add(buttonjie);
panel4.add(buttonsin);
panel4.add(buttoncos);
panel4.add(buttontan);
//////////////////////////////////////设计面板panel3
panel3.setLayout(new GridLayout(4,6));
button = new JButton[10];
for (int i = 0; i < button.length; i++) {
button [i] = new JButton(Integer.toString(i));
button [i].setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
button [i].setForeground (Color.blue);
button [i].addActionListener(this);
}
//buttonMC = new JButton("MC");
//buttonMC.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
//buttonMC.setForeground(Color.green);
//buttonMC.addActionListener(this);
//buttonMR = new JButton("MR");
//buttonMR.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
//buttonMR.setForeground(Color.green);
//buttonMR.addActionListener(this);
//buttonMS = new JButton("MS");
//buttonMS.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
//buttonMS.setForeground(Color.green);
//buttonMS.addActionListener(this);
//buttonMAdd = new JButton("M+");
//buttonMAdd.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
//buttonMAdd.setForeground(Color.green);
//buttonMAdd.addActionListener(this);
buttonAddAndSub = new JButton("+/-");
buttonAddAndSub.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonAddAndSub.setForeground(Color.blue);
buttonAddAndSub.addActionListener(this);
buttonDot = new JButton(".");
buttonDot.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonDot.setForeground(Color.blue);
buttonDot.addActionListener(this);
buttonAdd = new JButton("+");
buttonAdd.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonAdd.setForeground(Color.red);
buttonAdd.addActionListener(this);
buttonSub = new JButton("-");
buttonSub.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonSub.setForeground(Color.red);
buttonSub.addActionListener(this);
buttonMul = new JButton("*");
buttonMul.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonMul.setForeground(Color.red);
buttonMul.addActionListener(this);
buttonDiv = new JButton("/");
buttonDiv.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonDiv.setForeground(Color.red);
buttonDiv.addActionListener(this);
buttonMod = new JButton("%");
buttonMod.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonMod.setForeground(Color.magenta);
buttonMod.addActionListener(this);
buttonSqrt = new JButton("sqrt");
buttonSqrt.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonSqrt.setForeground(Color.magenta);
buttonSqrt.addActionListener(this);
buttonDao = new JButton("1/x");
buttonDao.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonDao.setForeground(Color.magenta);
buttonDao.addActionListener(this);
buttonEqual = new JButton("=");
buttonEqual.setFont (new java.awt.Font("Helvetica",Font.PLAIN,14));
buttonEqual.setForeground(Color.black);
buttonEqual.addActionListener(this);
//panel3.add(buttonMC);
panel3.add(button[7]);
panel3.add(button[8]);
panel3.add(button[9]);
panel3.add(buttonDiv);
panel3.add(buttonSqrt);
//panel3.add(buttonMR);
panel3.add(button[4]);
panel3.add(button[5]);
panel3.add(button[6]);
panel3.add(buttonMul);
panel3.add(buttonMod);
//panel3.add(buttonMS);
panel3.add(button[1]);
panel3.add(button[2]);
panel3.add(button[3]);
panel3.add(buttonSub);
panel3.add(buttonDao);
//panel3.add(buttonMAdd);
panel3.add(button[0]);
panel3.add(buttonAddAndSub);
panel3.add(buttonDot);
panel3.add(buttonAdd);
panel3.add(buttonEqual);
frame.setResizable(false);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
///////////////////////////////////////////////////为各按钮注册监听者
public void actionPerformed(ActionEvent e){
if(e.getSource() == button[0]){
if(textAnswer.getText().equals("0")) return;
if(!start)textAnswer.setText (textAnswer.getText() + Integer.toString(0));
else textAnswer.setText("0" );
start = false;
}
else if(e.getSource() == button[1]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(1));
else textAnswer.setText( "1" );
start = false;
}
if(e.getSource() == button[2]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(2));
else textAnswer.setText( "2" );
start = false;
}
if(e.getSource() == button[3]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(3));
else textAnswer.setText( "3" );
start = false;
}
if(e.getSource() == button[4]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(4));
else textAnswer.setText( "4" );
start = false;
}
if(e.getSource() == button[5]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(5));
else textAnswer.setText( "5" );
start = false;
}
if(e.getSource() == button[6]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(6));
else textAnswer.setText( "6" );
start = false;
}
if(e.getSource() == button[7]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(7));
else textAnswer.setText( "7" );
start = false;
}
if(e.getSource() == button[8]){
if (!start)textAnswer.setText(textAnswer.getText() + Integer.toString(8));
else textAnswer.setText( "8" );
start = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -