📄 calculator.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class calculator extends JFrame implements ActionListener,KeyListener
{
JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
JButton b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
JTextField t;
boolean empty=true;
String sign=null;
String temp=null;
int key;
public calculator()
{
super("计算器");
setSize(400,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
newpanel p=new newpanel();
p.setLayout(null);
getContentPane().add(p);
Icon pic1=new ImageIcon("1.gif");
Icon pic2=new ImageIcon("2.gif");
Icon pic3=new ImageIcon("3.gif");
Icon pic4=new ImageIcon("4.gif");
Icon pic5=new ImageIcon("5.gif");
Icon pic6=new ImageIcon("6.gif");
Icon pic7=new ImageIcon("7.gif");
Icon pic8=new ImageIcon("8.gif");
Icon pic9=new ImageIcon("9.gif");
Icon pic0=new ImageIcon("0.gif");
Icon pic11=new ImageIcon("11.gif");
Icon pic12=new ImageIcon("12.gif");
Icon pic13=new ImageIcon("13.gif");
Icon pic14=new ImageIcon("14.gif");
Icon pic15=new ImageIcon("15.gif");
Icon pic16=new ImageIcon("16.gif");
Icon pic17=new ImageIcon("17.gif");
Icon pic18=new ImageIcon("18.gif");
Icon pic19=new ImageIcon("19.gif");
Icon pic20=new ImageIcon("20.gif");
Icon pic21=new ImageIcon("21.gif");
Icon pic22=new ImageIcon("22.gif");
Icon pic23=new ImageIcon("23.gif");
Icon pic24=new ImageIcon("24.gif");
Icon pic25=new ImageIcon("25.gif");
Icon pic26=new ImageIcon("26.gif");
b1=new JButton(pic1);
b1.setBounds(30,347,60,40);
b1.addActionListener(this);
b1.addKeyListener(this);
p.add(b1);
b2=new JButton(pic2);
b2.setBounds(102,347,60,40);
b2.addActionListener(this);
b2.addKeyListener(this);
p.add(b2);
b3=new JButton(pic3);
b3.setBounds(174,347,60,40);
b3.addActionListener(this);
b3.addKeyListener(this);
p.add(b3);
b4=new JButton(pic4);
b4.setBounds(30,297,60,40);
b4.addActionListener(this);
b4.addKeyListener(this);
p.add(b4);
b5=new JButton(pic5);
b5.setBounds(102,297,60,40);
b5.addActionListener(this);
b5.addKeyListener(this);
p.add(b5);
b6=new JButton(pic6);
b6.setBounds(174,297,60,40);
b6.addActionListener(this);
b6.addKeyListener(this);
p.add(b6);
b7=new JButton(pic7);
b7.setBounds(30,247,60,40);
b7.addActionListener(this);
b7.addKeyListener(this);
p.add(b7);
b8=new JButton(pic8);
b8.setBounds(102,247,60,40);
b8.addActionListener(this);
b8.addKeyListener(this);
p.add(b8);
b9=new JButton(pic9);
b9.setBounds(174,247,60,40);
b9.addActionListener(this);
b9.addKeyListener(this);
p.add(b9);
b0=new JButton(pic0);
b0.setBounds(30,397,60,40);
b0.addActionListener(this);
b0.addKeyListener(this);
p.add(b0);
b11=new JButton(pic11);
b11.setBounds(102,397,60,40);
b11.addActionListener(this);
b11.addKeyListener(this);
p.add(b11);
b12=new JButton(pic12);
b12.setBounds(174,397,60,40);
b12.addActionListener(this);
b12.addKeyListener(this);
p.add(b12);
b13=new JButton(pic13);
b13.setBounds(246,347,60,92);
b13.addActionListener(this);
b13.addKeyListener(this);
p.add(b13);
b14=new JButton(pic14);
b14.setBounds(318,397,60,40);
b14.addActionListener(this);
b14.addKeyListener(this);
p.add(b14);
b15=new JButton(pic15);
b15.setBounds(318,347,60,40);
b15.addActionListener(this);
b15.addKeyListener(this);
p.add(b15);
b16=new JButton(pic16);
b16.setBounds(246,297,60,40);
b16.addActionListener(this);
b16.addKeyListener(this);
p.add(b16);
b17=new JButton(pic17);
b17.setBounds(318,297,60,40);
b17.addActionListener(this);
b17.addKeyListener(this);
p.add(b17);
b18=new JButton(pic18);
b18.setBounds(246,247,60,40);
b18.addActionListener(this);
b18.addKeyListener(this);
p.add(b18);
b19=new JButton(pic19);
b19.setBounds(318,247,60,40);
b19.addActionListener(this);
b19.addKeyListener(this);
p.add(b19);
b20=new JButton(pic20);
b20.setBounds(30,212,60,30);
b20.addActionListener(this);
b20.addKeyListener(this);
p.add(b20);
b21=new JButton(pic21);
b21.setBounds(102,212,60,30);
b21.addActionListener(this);
b21.addKeyListener(this);
p.add(b21);
b22=new JButton(pic22);
b22.setBounds(174,212,60,30);
b22.addActionListener(this);
b22.addKeyListener(this);
p.add(b22);
b23=new JButton(pic23);
b23.setBounds(246,212,60,30);
b23.addActionListener(this);
b23.addKeyListener(this);
p.add(b23);
b24=new JButton(pic24);
b24.setBounds(318,212,60,30);
b24.addActionListener(this);
b24.addKeyListener(this);
p.add(b24);
b25=new JButton(pic25);
b25.setBounds(246,172,60,30);
b25.addActionListener(this);
b25.addKeyListener(this);
p.add(b25);
b26=new JButton(pic26);
b26.setBounds(318,172,60,30);
b26.addActionListener(this);
b26.addKeyListener(this);
p.add(b26);
t=new JTextField(13);
t.setHorizontalAlignment(JTextField.RIGHT);
t.setBackground(new Color(175,190,182));
Font font=new Font("DigifaceWide",Font.PLAIN,32);
t.setFont(font);
t.setEditable(false);
t.setText("0");
t.setBounds(45,63,310,62);
t.addKeyListener(this);
p.add(t);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Object bobj=e.getSource();
if (bobj==b1)
{
if (!empty){if (t.getText().equals("0")){t.setText("1");return;}t.setText(t.getText()+"1");}
else{t.setText("1");}
empty=false;
return;
}
if (bobj==b2)
{
if (!empty){if (t.getText().equals("0")){t.setText("2");return;}t.setText(t.getText()+"2");}
else{t.setText("2");}
empty=false;
return;
}
if (bobj==b3)
{
if (!empty){if (t.getText().equals("0")){t.setText("3");return;}t.setText(t.getText()+"3");}
else{t.setText("3");}
empty=false;
return;
}
if (bobj==b4)
{
if (!empty){if (t.getText().equals("0")){t.setText("4");return;}t.setText(t.getText()+"4");}
else{t.setText("4");}
empty=false;
return;
}
if (bobj==b5)
{
if (!empty){if (t.getText().equals("0")){t.setText("5");return;}t.setText(t.getText()+"5");}
else{t.setText("5");}
empty=false;
return;
}
if (bobj==b6)
{
if (!empty){if (t.getText().equals("0")){t.setText("6");return;}t.setText(t.getText()+"6");}
else{t.setText("6");}
empty=false;
return;
}
if (bobj==b7)
{
if (!empty){if (t.getText().equals("0")){t.setText("7");return;}t.setText(t.getText()+"7");}
else{t.setText("7");}
empty=false;
return;
}
if (bobj==b8)
{
if (!empty){if (t.getText().equals("0")){t.setText("8");return;}t.setText(t.getText()+"8");}
else{t.setText("8");}
empty=false;
return;
}
if (bobj==b9)
{
if (!empty){if (t.getText().equals("0")){t.setText("9");return;}t.setText(t.getText()+"9");}
else{t.setText("9");}
empty=false;
return;
}
if (bobj==b0)
{
if (t.getText().equals("0"))return;
if (!empty){t.setText(t.getText()+"0");}
else{t.setText("0");}
empty=false;
return;
}
if (bobj==b11)
{
if(t.getText().indexOf(".")!=-1)
{
float d=Float.parseFloat(t.getText());
d=d*(-1);
t.setText(String.valueOf(d));
}
else
{
int i=Integer.parseInt(t.getText());
i=i*(-1);
t.setText(String.valueOf(i));
}
}
if (bobj==b12)
{
if (t.getText().indexOf(".") != -1)return;
if (!empty && t.getText()!="")
{
t.setText(t.getText()+".");
}
else
{
t.setText("0.");
}
empty=false;
}
if (bobj==b13)
{
if (sign!=null)
{
result(e);
}
sign="+";
temp=t.getText();
empty=true;
}
if (bobj==b14)
{
if (sign!=null)
{
result(e);
}
sign="=";
temp=t.getText();
empty=true;
}
if (bobj==b15)
{
if (sign!=null)
{
result(e);
}
sign="/";
temp=t.getText();
empty=true;
}
if (bobj==b16)
{
if (sign!=null)
{
result(e);
}
sign="-";
temp=t.getText();
empty=true;
}
if (bobj==b17)
{
if (sign!=null)
{
result(e);
}
sign="*";
temp=t.getText();
empty=true;
}
if (bobj==b18)
{
if (sign!=null)
{
result(e);
}
sign="%";
temp=t.getText();
empty=true;
}
if (bobj==b19)
{
sign="sqrt";
temp=t.getText();
result(e);
empty=true;
}
if (bobj==b23)
{
if (t.getText().equals(""))return;
if (t.getText().length()>1)
{
t.setText(t.getText().substring(0,(t.getText().length()-1)));
}
else
{t.setText("0");empty=true;}
}
if (bobj==b24)
{
sign="1/x";
temp=t.getText();
result(e);
empty=true;
}
if (bobj==b25)
{
t.setText("0");
empty=true;
}
if (bobj==b26)
{
t.setText("0");
empty=true;
sign=null;
temp=null;
}
}
public void result(AWTEvent e)
{
float num_last=0;
float num_now=0;
try{
num_last=Float.parseFloat(temp);
num_now=Float.parseFloat(t.getText());}
catch(NumberFormatException ne)
{
sign=null;
temp=null;
t.setText("Error");
empty=true;
}
if (sign==null || temp==null || t.getText().equals(""))
{
empty=true;return;
}
if (sign.equals("+"))
{
int num=(int) (num_last+num_now);
if (num==num_last+num_now){t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(num_last+num_now));}
}
if (sign.equals("-"))
{
int num=(int)(num_last-num_now);
if (num==num_last-num_now){t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(num_last-num_now));}
}
if (sign.equals("*"))
{
int num=(int)(num_last*num_now);
if (num==num_last*num_now){t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(num_last*num_now));}
}
if (sign.equals("/"))
{
if (num_now==0){t.setText("Error");}
else
{
int num=(int)(num_last/num_now);
if (num==num_last/num_now){t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(num_last/num_now));}
}
}
if (sign.equals("%"))
{
int i1=Integer.parseInt(temp);
int i2=Integer.parseInt(t.getText());
if (i2==0){t.setText("Error");}
else
{
int i3=(int)(i1/i2);
int i4=i1-(i2*i3);
t.setText(String.valueOf(i4));
}
}
if (sign.equals("sqrt"))
{
if (t.getText().equals(""))return;
if (num_last>=0)
{
int num=(int)(Math.sqrt(num_last));
if (num==Math.sqrt(num_last))
{t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(Math.sqrt(num_last)));}
}
if (num_last<0){t.setText("Error");}
}
if (sign.equals("1/x"))
{
if (t.getText().equals(""))return;
if (num_last==0){t.setText("Error");}
else
{
int num=(int)(1/num_last);
if (num==1/num_last)
{t.setText(String.valueOf(num));}
else{t.setText(String.valueOf(1/num_last));}
}
}
sign=null;
empty=true;
}
public void keyPressed(KeyEvent e)
{
key=e.getKeyCode();
if (key==KeyEvent.VK_NUMPAD0 || key==KeyEvent.VK_0)
{
if (t.getText().equals("0"))return;
if (!empty){t.setText(t.getText()+"0");}
else{t.setText("0");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD1 || key==KeyEvent.VK_1)
{
if (!empty){if (t.getText().equals("0")){t.setText("1");return;}t.setText(t.getText()+"1");}
else{t.setText("1");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD2 || key==KeyEvent.VK_2)
{
if (!empty){if (t.getText().equals("0")){t.setText("2");return;}t.setText(t.getText()+"2");}
else{t.setText("2");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD3 || key==KeyEvent.VK_3)
{
if (!empty){if (t.getText().equals("0")){t.setText("3");return;}t.setText(t.getText()+"3");}
else{t.setText("3");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD4 || key==KeyEvent.VK_4)
{
if (!empty){if (t.getText().equals("0")){t.setText("4");return;}t.setText(t.getText()+"4");}
else{t.setText("4");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD5 || key==KeyEvent.VK_5)
{
if (!empty){if (t.getText().equals("0")){t.setText("5");return;}t.setText(t.getText()+"5");}
else{t.setText("5");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD6 || key==KeyEvent.VK_6)
{
if (!empty){if (t.getText().equals("0")){t.setText("6");return;}t.setText(t.getText()+"6");}
else{t.setText("6");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD7 || key==KeyEvent.VK_7)
{
if (!empty){if (t.getText().equals("0")){t.setText("7");return;}t.setText(t.getText()+"7");}
else{t.setText("7");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD8 || key==KeyEvent.VK_8)
{
if (!empty){if (t.getText().equals("0")){t.setText("8");return;}t.setText(t.getText()+"8");}
else{t.setText("8");}
empty=false;
return;
}
if (key==KeyEvent.VK_NUMPAD9 || key==KeyEvent.VK_9)
{
if (!empty){if (t.getText().equals("0")){t.setText("9");return;}t.setText(t.getText()+"9");}
else{t.setText("9");}
empty=false;
return;
}
if (key==KeyEvent.VK_PERIOD || key==KeyEvent.VK_DECIMAL)
{
if (t.getText().indexOf(".") != -1)return;
if (!empty && t.getText()!="")
{
t.setText(t.getText()+".");
}
else
{
t.setText("0.");
}
empty=false;
}
if (key==KeyEvent.VK_ADD)
{
if (sign!=null)
{
result(e);
}
sign="+";
temp=t.getText();
empty=true;
}
if (key==KeyEvent.VK_MINUS || key==KeyEvent.VK_SUBTRACT)
{
if (sign!=null)
{
result(e);
}
sign="-";
temp=t.getText();
empty=true;
}
if (key==KeyEvent.VK_MULTIPLY)
{
if (sign!=null)
{
result(e);
}
sign="*";
temp=t.getText();
empty=true;
}
if (key==KeyEvent.VK_DIVIDE)
{
if (sign!=null)
{
result(e);
}
sign="/";
temp=t.getText();
empty=true;
}
if (key==KeyEvent.VK_ENTER)
{
if (sign!=null)
{
result(e);
}
sign="=";
temp=t.getText();
empty=true;
}
if (key==KeyEvent.VK_ESCAPE)
{
t.setText("0");
empty=true;
sign=null;
temp=null;
}
if (key==KeyEvent.VK_BACK_SPACE)
{
if (t.getText().equals(""))return;
if (t.getText().length()>1)
{
t.setText(t.getText().substring(0,(t.getText().length()-1)));
}
else
{t.setText("0");empty=true;}
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
class newpanel extends JPanel
{
public newpanel(){}
public void paintComponent(Graphics g)
{
int x=0,y=0;
ImageIcon icon=new ImageIcon("calculator.jpg");
g.drawImage(icon.getImage(),x,y,400,480,this);
}
}
public static void main(String args[])
{
new calculator();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -