📄 testcalculator.java
字号:
{
if(mul==false)
{
if(mul1==false)
{
result=Double.parseDouble(display);
jTextFiled.setText(display);
}
else
{
result=result*Double.parseDouble(display);
jTextFiled.setText(String.valueOf(result));
}
}
else result=Double.parseDouble(display);
sign =1;
equa=1;
equa1=-1;
operator=3;
mul1=true;
}
else if(e.getSource()==divild)
{
if(div==false)
{
if(div1==false)
{
result=Double.parseDouble(display);
jTextFiled.setText(display);
}
else
{
result=result/Double.parseDouble(display);
jTextFiled.setText(String.valueOf(result));
}
}
else result=Double.parseDouble(display);
sign =1;
equa=1;
equa1=-1;
operator=4;
div1=true;
}
else if(e.getSource()==equal)
{
if(operator==1)
{
if(equa==1)
{
operand=Double.parseDouble(jTextFiled.getText());
equa=-1;
}
if(equa1==-1)
result=result+Double.parseDouble(jTextFiled.getText());
if(equa1==1)
result=Double.parseDouble(jTextFiled.getText())+operand;
if(paste==true)
jTextFiled.setText(String.valueOf(result+Double.parseDouble(copy)));
else jTextFiled.setText(display=String.valueOf(result));
sign =-1;
equa1=1;
}
if(operator==2)
{
if(equa==1)
{
operand=Double.parseDouble(jTextFiled.getText());
equa=-1;
}
if(equa1==-1)
result=result-Double.parseDouble(jTextFiled.getText());
if(equa1==1)
result=Double.parseDouble(jTextFiled.getText())-operand;
if(paste==true)
jTextFiled.setText(String.valueOf(Double.parseDouble(copy)-Double.valueOf(jTextFiled.getText())));
else jTextFiled.setText(display=String.valueOf(result));
sign =-1;
equa1=1;
}
if(operator==3)
{
if(equa==1)
{
operand=Double.parseDouble(jTextFiled.getText());
equa=-1;
}
if(equa1==-1)
result=result*Double.parseDouble(jTextFiled.getText());
if(equa1==1)
result=Double.parseDouble(jTextFiled.getText())*operand;
if(paste==true)
jTextFiled.setText(String.valueOf(Double.parseDouble(copy)*Double.valueOf(jTextFiled.getText())));
else jTextFiled.setText(display=String.valueOf(result));
sign =-1;
equa1=1;
}
if(operator==4)
{
if(equa==1)
{
operand=Double.parseDouble(jTextFiled.getText());
equa=-1;
}
if(equa1==-1)
result=result/Double.parseDouble(jTextFiled.getText());
if(equa1==1)
result=Double.parseDouble(jTextFiled.getText())/operand;
if(paste==true)
jTextFiled.setText(String.valueOf(Double.parseDouble(copy)/Double.valueOf(jTextFiled.getText())));
else jTextFiled.setText(display=String.valueOf(result));
sign =-1;
equa1=1;
}
if(operator==5)
{
double r;
if(paste==true)
r=Math.pow(new Double(Double.valueOf(copy)).doubleValue(),new Double(Double.parseDouble(jTextFiled.getText())).doubleValue());
else r=Math.pow(new Double(result).doubleValue(),new Double(Double.parseDouble(jTextFiled.getText())).doubleValue());
sign=1;
jTextFiled.setText(display=String.valueOf(r));
}
sign=1;
pul=true;
sub=true;
mul=true;
div=true;
paste=false;
}
else if(e.getSource()==back)
{
display=jTextFiled.getText();
if(display.length()>=1)
{ if(display.length()==1)
{
display="0";
sign=1;
}
else display=display.substring(0,display.length()-1);
operand=Double.parseDouble(display);
jTextFiled. setText(display);
}
}
else if (e.getSource()==ce)
{
display=new String("0");
sign=1;
jTextFiled.setText(display);
}
else if(e.getSource()==cc)
{
display=new String("0");
operand =0.0;
result=0.0;
sign =1;
equa=-1;
equa1=-1;
pul=false;
sub=false;
mul=false;
div=false;
pul1=false;
sub1=false;
mul1=false;
div1=false;
operator=0;
jTextFiled.setText(display);
}
else if(e.getSource()==sqrt)
{
if(Double.parseDouble(jTextFiled.getText())>0)
jTextFiled.setText(Double.toString(Math.sqrt(Double.parseDouble(jTextFiled.getText()))));
else
{
jTextFiled.setText("负数不能开方");
Toolkit.getDefaultToolkit().beep();
}
sign=1;
}
else if(e.getSource()==mc)
{
if(signmemory=true)
{
memory = 0;
jLabel1.setText("");
operand =0.0;
operator=0;
signmemory=false;
}
sign=1;
}
else if(e.getSource()==mr)
{
if(signmemory=true)
jTextFiled.setText(Integer.toString(memory));
sign=1;
}
else if(e.getSource()==ms)
{
if(Integer.parseInt(jTextFiled.getText())!=0)
{
signmemory=true;
jLabel1.setText("M");
memory=Integer.parseInt(jTextFiled.getText());
}
sign=1;
}
else if(e.getSource()==mpuls)
{
if(signmemory=true)
memory=memory+Integer.parseInt(jTextFiled.getText());
sign=1;
}
else if(e.getSource()==x1)
{
if(Double.parseDouble(jTextFiled.getText())==0)
{
jTextFiled.setText("除数不能为零.");
Toolkit.getDefaultToolkit().beep();
}
else
{
result=1/(Double.parseDouble(jTextFiled.getText()));
jTextFiled.setText(String.valueOf(result));
}
sign=1;
}
else if(e.getSource()==x2)
{
result=Double.parseDouble(jTextFiled.getText());
result=result*result;
jTextFiled.setText(String.valueOf(result));
sign=1;
}
else if(e.getSource()==x3)
{
result=Double.parseDouble(jTextFiled.getText());
result=result*result*result;
jTextFiled.setText(String.valueOf(result));
sign=1;
}
else if(e.getSource()==xy)
{
result=Double.parseDouble(jTextFiled.getText());
sign =1;
operator=5;
}
else if(e.getSource()==tan)
{
double ta;
result=Double.parseDouble(jTextFiled.getText());
if(signAngle==1)
ta=Math.tan(new Double(result).doubleValue());
else ta=Math.tan((2*Math.PI*(new Double(result).doubleValue()))/360);
jTextFiled.setText(display=String.valueOf(ta));
sign=1;
}
else if(e.getSource()==sin)
{
double si;
result=Double.parseDouble(jTextFiled.getText());
if(signAngle==1)
si=Math.tan(new Double(result).doubleValue());
else si=Math.tan((2*Math.PI*(new Double(result).doubleValue()))/360);
jTextFiled.setText(display=String.valueOf(si));
sign=1;
}
else if(e.getSource()==cos)
{
double co;
result=Double.parseDouble(jTextFiled.getText());
if(signAngle==1)
co=Math.tan(new Double(result).doubleValue());
else co=Math.tan((2*Math.PI*(new Double(result).doubleValue()))/360);
jTextFiled.setText(display=String.valueOf(co));
sign=1;
}
else if(e.getSource()==ln)
{
double ln;
result=Double.parseDouble(jTextFiled.getText());
ln=Math.log(new Double(result).doubleValue());
jTextFiled.setText(display=String.valueOf(ln));
sign=1;
}
else if(e.getSource()==log)
{
double lo;
result=Double.parseDouble(jTextFiled.getText());
lo=Math.log10(new Double(result).doubleValue());
jTextFiled.setText(display=String.valueOf(lo));
sign=1;
}
else if(e.getSource()==copyItem)
{
copy=new String(jTextFiled.getText());
pasteItem.setEnabled(true);
}
else if((JMenuItem)e.getSource()==pasteItem)
{
jTextFiled.setText(copy);
paste=true;
}
if(e.getSource()==item_win)
{
this.setTitle(" 计算器 - [Windows]");
this.setSize(560,340);
stylechose(str1);
}
else if(e.getSource()==item_java)
{
this.setTitle(" 计算器 - [Java]");
this.setSize(560,360);
stylechose(str2);
}
else if(e.getSource()==item_ced)
{
this.setTitle(" 计算器 - [CED/Motif]");
this.setSize(560,430);
stylechose(str3);
}
else if(e.getSource()==aboutItem)
{
JOptionPane.showMessageDialog(Calculator.this,About,"关于 计算器",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("cal.png"));
}
else if(e.getSource()==helpItem)
{
JOptionPane.showMessageDialog(Calculator.this,Help,"?帮助",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("help.png"));
}
}
private void stylechose(String str)
{//设置窗口风格
try
{
UIManager.setLookAndFeel(str);
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception ex)
{
System.out.println("the LookAndFeel class load failed!") ;
}
}
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
int sel=JOptionPane.showConfirmDialog(new JFrame(),"确认关闭窗口吗?");
if(sel==JOptionPane.YES_OPTION)
{
e.getWindow().dispose();
System.exit(0);
}
}
}
private JPanel panel=new JPanel();
private JPanel panel1=new JPanel();
private JPanel panel2=new JPanel();
private JPanel panel3=new JPanel();
private JPanel panel4=new JPanel();
private JPanel panel5=new JPanel();
private JMenuBar menuBar = new JMenuBar();
private JMenu EditMenu,SeeMenu,HelpMenu;
private JMenuItem copyItem,pasteItem,helpItem,aboutItem;
private static final String[ ] EditNames = { "复制(C)", "粘贴(V)"};
private static final String[ ] SeeNames = { "Windows(W)","Java(Metal)(J)","CED/Motif(E)" };
private static final String[ ] HelpNames = { "帮助主题(H)", "关于计算器(A)"};
private String str1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
private String str2 = "javax.swing.plaf.metal.MetalLookAndFeel";
private String str3 = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
private String About="Zelosor 计算器\n版本1.0.0\n\n版权所有 (C) 2004.12.12\n 何泽荣\n 华南农业大学02级计算机(1)班\n Email: Zelosor@163.com";
private String Help="请参照Windows计算器的帮助文件~~\n(有待进一步改进!)";
private JButton num1,num2,num3,num4,num5,num6,num7,num8,num9,num0,point,minus,plus,subtract,multiply,divild,equal,back,ce,cc,sqrt;
private JButton a,b,c,d,ee,f,mc,mr,ms,mpuls,ln,x1,x2,x3,xy,tan,cos,sin,log;
private JRadioButton garrison16,garrison10,garrison8,garrison2,angle,radian;
private JRadioButtonMenuItem item_win,item_java,item_ced;
private JLabel jLabel,jLabel1;
private JTextField jTextFiled=new JTextField("0");
private static String display,copy;
private static Double operand,result;
private int sign0,sign,sign2,sign8,sign10,sign16,signAngle,equa,equa1,operator,memory;
private boolean signmemory,win,java,ced,mac,cro,pul,sub,mul,div,pul1,sub1,mul1,div1,paste;
}
public class TestCalculator
{
public static void main(String[] args)throws Exception
{
new Calculator();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -