📄 jisuanqi.java
字号:
package jisuanqi;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
import javax.swing.*;
public class Caculator
{
public static void main(String args[])
{
CaculatorFrame frame =new CaculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class CaculatorFrame extends JFrame
{
private static final long serialVersionUID = 1L;
public CaculatorFrame()
{
setTitle("计算器");
Container contentPane=getContentPane();
CaculatorPanel panel=new CaculatorPanel();
contentPane.add(panel);
}
}
class CaculatorPanel extends JPanel
{
private static final long serialVersionUID = 1L;
JTextField text;
JPanel jp1;
JPanel jp2;
JPanel jp3;
JPanel jp4;
JPanel jp5;
double result1;
double result2;
double result3;
boolean start1=true;
boolean start2=true;
boolean flag1=true;
boolean flag2=false;
boolean flag3=true;
String command1;
String command2;
String command3;
String date1;
String date2;
public CaculatorPanel()
{
setLayout(new BorderLayout());
text=new JTextField();
text.setHorizontalAlignment(JTextField.RIGHT);
// text.addKeyListener(new KeyEventHandle());
text.setText("0");
text.setEditable(false);
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
jp5=new JPanel();
ActionListener insert1=new Insert1();
ActionListener insert2=new Insert2();
ActionListener command4=new Command1();
ActionListener command5=new Command2();
ActionListener clear=new Clear();
ActionListener clearEnd=new ClearEnd();
ActionListener back=new Back();
add(text,BorderLayout.NORTH);
jp1.setLayout(new GridLayout(4,3));
jp2.setLayout(new GridLayout(4,1));
jp3.setLayout(new GridLayout(1,4));
jp5.setLayout(new GridLayout(4,2));
addButton("9",insert1,jp1,255,255,0);
addButton("8",insert1,jp1,255,255,0);
addButton("7",insert1,jp1,255,255,0);
addButton("6",insert1,jp1,255,255,0);
addButton("5",insert1,jp1,255,255,0);
addButton("4",insert1,jp1,255,255,0);
addButton("3",insert1,jp1,255,255,0);
addButton("2",insert1,jp1,255,255,0);
addButton("1",insert1,jp1,255,255,0);
addButton("0",insert1,jp1,255,255,0);
addButton(".",insert1,jp1,255,255,0);
addButton("/",insert2,jp1,255,0,0);
addButton("+",command4,jp2,0,255,0);
addButton("-",command4,jp2,0,255,0);
addButton("×",command4,jp2,0,255,0);
addButton("÷",command4,jp2,0,255,0);
addButton("=",command4,jp3,0,0,255);
addButton("←",back,jp3,0,0,255);
addButton("C",clear,jp3,0,255,255);
addButton("CE",clearEnd,jp3,0,255,255);
addButton("+/-",command5,jp5,255,0,255);
addButton("sqrt",command5,jp5,255,0,255);
addButton("sin",command5,jp5,255,0,255);
addButton("cos",command5,jp5,255,0,255);
addButton("tan",command5,jp5,255,0,255);
addButton("ln",command5,jp5,255,0,255);
addButton("1/x",command5,jp5,255,0,255);
addButton("x*x",command5,jp5,255,0,255);
jp4.setLayout(new BorderLayout());
jp4.add(jp2);
jp4.add(jp3,BorderLayout.SOUTH);
jp4.add(jp5,BorderLayout.EAST);
add(jp1);
add(jp4,BorderLayout.EAST);
addKeyListener(new KeyEventHandle());
}
public void addButton(String s,ActionListener l,JPanel j,int c1,int c2,int c3)
{
JButton button=new JButton(s);
button.addActionListener(l);
button.setBackground(new Color(c1,c2,c3));
j.add(button);
}
private class Insert1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input=e.getActionCommand();
if(start1)
{
text.setText("");
start1=false;
}
text.setText(text.getText()+input);
}
}
private class Insert2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input=e.getActionCommand();
if(start1)
{
text.setText("");
start1=false;
}
text.setText(text.getText()+input);
flag2=true;
}
}
private class Clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
text.setText("0");
command1=null;
command2=null;
command3=null;
result1=0;
result2=0;
result3=0;
start1=true;
start2=true;
flag1=true;
flag2=false;
}
}
private class ClearEnd implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
text.setText("0");
start1=true;
}
}
private class Back implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String s =text.getText();
int j=s.length();
if(j-2>=0)
text.setText(s.substring(0,j-1));
else
{text.setText("0");
start1=true;
}
}
}
class KeyEventHandle extends KeyAdapter
{
//int keycode;
String str=new String();
public void keyReleased(KeyEvent e)
{
CaculatorPanel cp=(CaculatorPanel)e.getSource();
str=""+e.getKeyChar();
if(str=="0"||str=="1"||str=="2"||str=="3"||str=="4"||str=="5"||str=="6"||str=="7"||str=="8"||str=="9"||str=="9"||str==".")
{ if(cp.start1)
{
cp.text.setText("");
cp.start1=false;
}
cp.text.setText(cp.text.getText()+str);
}
if(str=="/")
{
cp.text.setText(cp.text.getText()+str);
cp.flag2=true;
}
if(str=="+"||str=="-"||str=="*"||str=="=")
{
if(cp.flag2==false)
{
if(cp.start2)
{
// String st1=e.getActionCommand();
cp.result1=Double.parseDouble(cp.text.getText());
cp.command1=str;
cp.start2=false;
cp.start1=true;
cp.flag1=true;
}
else{
if(cp.flag1)
{
cp.result2=Double.parseDouble(cp.text.getText());
// String st1=e.getActionCommand();
cp.command2=str;
if(cp.command2=="=")
{
cp.text.setText(""+count(cp.result1,cp.result2,cp.command1));
cp.result2=0;
cp.start1=true;
cp.flag1=true;
cp.start2=true;
// return;
}
else if(cp.command2=="+"||cp.command2=="-"||cp.command1=="*")
{
cp.result1=count(cp.result1,cp.result2,cp.command1);
cp.text.setText(""+cp.result1);
cp.command1=cp.command2;
cp.start1=true;
cp.flag1=true;
}
else if(cp.command2=="*"&&(cp.command1=="+"||cp.command1=="-"))
{
cp.flag1=false;
cp.start1=true;
return;
}
}
if(cp.flag1==false)
{
// String st6=e.getActionCommand();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -