📄 calculator.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Calculator
{
public static void main(String[] args)
{
CalculatorFrame frame=new CalculatorFrame();
frame.setSize(400,210);
frame.setVisible(true);
}
}
class CalculatorFrame extends JFrame
{
public CalculatorFrame()
{
setTitle("Calculator");
CalculatorPanel panel=new CalculatorPanel();
add(panel);
pack(); //调整此窗口的大小 以适合其子组件的首选大小和布局
}
}
class CalculatorPanel extends Panel
{
private JTextField display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
private boolean flag;
public CalculatorPanel()
{
setLayout(new BorderLayout());
result=0;
lastCommand="=";
start=true;
flag=true;
display=new JTextField("0");
display.setBackground(new Color(150,150,150));
display.setEnabled(false);
add(display,BorderLayout.NORTH);
ActionListener insert=new InsertAction();
ActionListener command=new CommandAction();
panel=new JPanel();
panel.setLayout(new GridLayout(5,5));
addButton("sin",command);
addButton("cos",command);
addButton("tan",command);
addButton("CE",command);
addButton("←",command);
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("×",command);
addButton("x^2",command);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("÷",command);
addButton("log",command);
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("-",command);
addButton("sqrt",command);
addButton("0",insert);
addButton(".",insert);
addButton("=",command);
addButton("+",command);
addButton("1/x",command);
add(panel,BorderLayout.CENTER);
}
private void addButton(String label,ActionListener listener)
{
JButton button=new JButton(label);
button.addActionListener(listener);
button.setBackground(new Color(200,200,200));
button.setForeground(new Color(100,100,0));
panel.add(button);
}
private class InsertAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String input=event.getActionCommand();
if(start&&flag)
{
display.setText("");
start=false;
}
if(flag)
display.setText(display.getText()+input);
} }
private class CommandAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String command=event.getActionCommand();
if(command.equals("CE"))
{ display.setText("0");
start=true;
flag=true;
command="=";
}
else if(start&&flag)
{
if(command.equals("-"))
{display.setText(command);
start=false;
}
else if((command.equals("1/x")||command.equals("sin")||command.equals("x^2")||command.equals("n!")||command.equals("cos")||command.equals("tan")||command.equals("log")||command.equals("sqrt"))&&flag)
calculate(Double.parseDouble(display.getText()),command);
else if(flag)
lastCommand=command;
}
else{
if(command.equals("←")&&flag)
{ String s=display.getText();
char[] s1=s.toCharArray();
if(s.length()>=2)
{ String s2=new String(s1,0,s.length()-1);
display.setText(s2);
}
else
{ display.setText("0");
start=true;
}
}
else if(flag)
//flag为真 执行calculate()
{calculate(Double.parseDouble(display.getText()),command);
lastCommand=command;
start=true; }
}
}
}
public void calculate(double x,String command)
{ if(lastCommand.equals("+"))
result=result+x;
else if(lastCommand.equals("-"))
result-=x;
else if(lastCommand.equals("÷"))
{if(x!=0)
result/=x;
else
{ display.setText("除数不能为0");
start=false;
flag=false;
return;
}
}
else if(lastCommand.equals("×"))
result*=x;
else if(command.equals("1/x"))
{if(x!=0) result=1/x;
else
{ display.setText("除数不能为0");
start=false;
flag=false;
return;
}
}
else if(command.equals("sin"))
result=Math.sin(x);
else if(command.equals("x^2"))
result=x*x;
else if(command.equals("cos"))
result=Math.cos(x);
else if(command.equals("tan"))
result=Math.tan(x);
else if(command.equals("sqrt"))
{if(x>=0)
result=Math.sqrt(x);
else
{display.setText("函数输入无效");
start=false;
flag=false;
return;
}
}
else if(command.equals("log"))
{if(x>0)
result=Math.log(x);
else
{display.setText("函数输入无效");
start=false;
flag=false;
return;
}
}
else if(lastCommand.equals("="))
result=x;
display.setText(""+result);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -