import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.BigDecimal;
public class Calculator
{
public static void main(String[] args)
{
ButtonFrame frame = new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ButtonFrame extends JFrame implements ActionListener
{
public ButtonFrame()
{
setTitle("喜洋洋牌计算器");
setSize(450,300);
JPanel panel = new JPanel();
Container contentPane = getContentPane();
contentPane.add(panel);
JPanel textPanel = new JPanel();
panel.setBackground(Color.pink);
textPanel.setBackground(Color.cyan);
addText = new JTextField("" ,20 );
textPanel.add(addText);
contentPane.add(textPanel, BorderLayout.NORTH);
addButton1 =new JButton("1");
addButton2 =new JButton("2");
addButton3 =new JButton("3");
addButton4 =new JButton("4");
addButton5 =new JButton("5");
addButton6 =new JButton("6");
addButton7 =new JButton("7");
addButton8 =new JButton("8");
addButton9 =new JButton("9");
addButton10 =new JButton("0");
addButton11 =new JButton("+");
addButton12 =new JButton("-");
addButton13 =new JButton("*");
addButton14 =new JButton("/");
addButton15 =new JButton("=");
addButton16 =new JButton("n!");
addButton17 =new JButton("1/x");
addButton18 =new JButton("^");
addButton19 =new JButton(".");
addButton20 =new JButton("CE");
addButton21 =new JButton("PIE");
addButton22 =new JButton("BackSpace");
addButton23 =new JButton("+/-");
addButton24 =new JButton("Sqrt");
addButton1.setForeground(Color.blue);
addButton2.setForeground(Color.blue);
addButton3.setForeground(Color.blue);
addButton4.setForeground(Color.blue);
addButton5.setForeground(Color.blue);
addButton6.setForeground(Color.blue);
addButton7.setForeground(Color.blue);
addButton8.setForeground(Color.blue);
addButton9.setForeground(Color.blue);
addButton10.setForeground(Color.blue);
addText.setBackground(Color.white);
addButton20.setForeground(Color.red);
addButton22.setForeground(Color.red);
panel.add(addButton16);
panel.add(addButton24);
panel.add(addButton21);
panel.add(addButton22);
panel.add(addButton1);
panel.add(addButton2);
panel.add(addButton3);
panel.add(addButton11);
panel.add(addButton4);
panel.add(addButton5);
panel.add(addButton6);
panel.add(addButton12);
panel.add(addButton7);
panel.add(addButton8);
panel.add(addButton9);
panel.add(addButton13);
panel.add(addButton18);
panel.add(addButton10);
panel.add(addButton19);
panel.add(addButton14);
panel.add(addButton17);
panel.add(addButton23);
panel.add(addButton15);
panel.add(addButton20);
panel.setLayout(new GridLayout(6, 4,5,5));
addButton1.addActionListener(this);
addButton2.addActionListener(this);
addButton3.addActionListener(this);
addButton4.addActionListener(this);
addButton5.addActionListener(this);
addButton6.addActionListener(this);
addButton7.addActionListener(this);
addButton8.addActionListener(this);
addButton9.addActionListener(this);
addButton10.addActionListener(this);
addButton11.addActionListener(this);
addButton12.addActionListener(this);
addButton13.addActionListener(this);
addButton14.addActionListener(this);
addButton15.addActionListener(this);
addButton16.addActionListener(this);
addButton17.addActionListener(this);
addButton18.addActionListener(this);
addButton19.addActionListener(this);
addButton20.addActionListener(this);
addButton21.addActionListener(this);
addButton22.addActionListener(this);
addButton23.addActionListener(this);
addButton24.addActionListener(this);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu gyMenu =new JMenu("关于(G)");
JMenu bzMenu =new JMenu("帮助(H)");
JMenu bjMenu =new JMenu("编辑(E)");
JMenu ckMenu =new JMenu("查看(V)");
aa =new JMenuItem("版权");
ab =new JMenuItem("作者信息");
ac =new JMenuItem("使用说明");
ad =new JMenuItem("注意事项");
ae =new JMenuItem("声明");
cut=new JMenuItem("Cut");
paste=new JMenuItem("Paste");
copy=new JMenuItem("Copy");
menuBar.add(gyMenu);
menuBar.add(bzMenu);
menuBar.add(bjMenu);
menuBar.add(ckMenu);
gyMenu.add(aa);
gyMenu.add(ab);
bzMenu.add(ac);
bzMenu.add(ad);
gyMenu.add(ae);
bjMenu.add(cut);
bjMenu.add(copy);
bjMenu.add(paste);
gyMenu.setMnemonic('G');
bzMenu.setMnemonic('H');
bjMenu.setMnemonic('E');
ckMenu.setMnemonic('V');
ButtonGroup group = new ButtonGroup();
forwardItem = new JRadioButtonMenuItem("Forward");
forwardItem.setSelected(true);
forwardItem.setEnabled(false);
backwardItem = new JRadioButtonMenuItem("Backward");
backwardItem.setEnabled(false);
group.add(forwardItem);
group.add(backwardItem);
ckMenu.add(forwardItem);
ckMenu.add(backwardItem);
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
aa.addActionListener(this);
ab.addActionListener(this);
ac.addActionListener(this);
ad.addActionListener(this);
ae.addActionListener(this);
cut.addActionListener(this);
paste.addActionListener(this);
copy.addActionListener(this);
}
JTextField addText;
JButton addButton1,addButton2,addButton3,addButton4,
addButton5,addButton6,addButton7,addButton8,
addButton9,addButton10,addButton11,addButton12,
addButton13,addButton14,addButton15,addButton16,
addButton17,addButton18,addButton19,addButton20,addButton21,addButton22,addButton23,addButton24;
String z= new String(""),kk ;
double m,k,mm;
char f;
JMenuItem aa,ab,ac,ad,ae,cut,paste,copy;
JRadioButtonMenuItem forwardItem , backwardItem;
public void actionPerformed(ActionEvent a)
{
Object s=a.getSource();
if(s==aa){int selection = JOptionPane.showConfirmDialog(
ButtonFrame.this,
"尊重知识产权,创和谐编程世界;版权所有,盗版必究!","版权",
JOptionPane.DEFAULT_OPTION);
}
if(s==ab){int selection = JOptionPane.showConfirmDialog(
ButtonFrame.this,
"”喜洋洋“牌计算器编写小组成员:刘悦;王征,沈光辉","作者信息",
JOptionPane.DEFAULT_OPTION);
}
if(s==ae){int selection = JOptionPane.showConfirmDialog(
ButtonFrame.this,
"由于种种不足和缺陷,如未能满足您的要求,我们向您表示真挚的歉意,我们将进一步优化和改进","声明",
JOptionPane.DEFAULT_OPTION);
}
if(s==ad){int selection = JOptionPane.showConfirmDialog(
ButtonFrame.this,
"请将混合运算分解成分布运算;该版本只适用于简单算术运算","注意事项",
JOptionPane.DEFAULT_OPTION);
}
if(s==ac){int selection = JOptionPane.showConfirmDialog(
ButtonFrame.this,
"该版本每次只能进行一重运算,混合运算请拆分后分布运算;运算后请及时清零;乘方运算请输入完整算式;","声明",
JOptionPane.DEFAULT_OPTION);
}
if(s==addButton1)
z=z+"1";
if(s==addButton2)
z=z+"2";
if(s==addButton3)
z=z+"3";
if(s==addButton4)
z=z+"4";
if(s==addButton5)
z=z+"5";
if(s==addButton6)
z=z+"6";
if(s==addButton7)
z=z+"7";
if(s==addButton8)
z=z+"8";
if(s==addButton9)
z=z+"9";
if(s==addButton10)
z=z+"0";
if(s==addButton19)
z=z+".";
if(s==addButton20)
z="";
if(s==addButton21)
z="3.1415926";
if(s==addButton23)
z="-"+z;
if(s==addButton22)
{
String aaa=z.substring(0,z.length()-1);
z=aaa;
//StringBuffer aaa=new StringBuffer(z);for(int i=1;i<=z.length();) {aaa.setCharAt(z.length()-i,' ');z=new String (aaa);????? ++i; break;}
}
addText.setText(z);
if(s==addButton11)
{ f='+';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton12)
{f='-';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton13)
{f='*';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton14)
{f='/';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton16)
{f='!';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton17)
{ f='~';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton18)
{f='^';
m=Double.parseDouble(addText.getText().trim());
z="";}
if(s==addButton24)
{f='?';
m=Double.parseDouble(addText.getText().trim());
z="";
}
if(s==addButton15)
{
if(f=='+')
{
k=m+Double.parseDouble(addText.getText().trim());
addText.setText(""+k);
z="";
}
if(f=='-')
{
k=m-Double.parseDouble(addText.getText().trim());
addText.setText(""+k);
z="";
}
if(f=='*')
{
k=m*Double.parseDouble(addText.getText().trim());
addText.setText(""+new BigDecimal(k).setScale(3, BigDecimal.ROUND_HALF_UP));
z="";
}
if(f=='/')
{
k=m/Double.parseDouble(addText.getText().trim());
addText.setText(""+new BigDecimal(k).setScale(3, BigDecimal.ROUND_HALF_UP));
z="";
}
if(f=='^')
{
k=Math.pow(m,Double.parseDouble(addText.getText().trim()));
addText.setText(""+k);
z="";
}
if(f=='!')
{
k=1;
for(int i=1;i<=m;i++)
k=k*i;
addText.setText(""+k);
z="";
}
if(f=='~')
{
k=1/m;
addText.setText(""+new BigDecimal(k).setScale(3, BigDecimal.ROUND_HALF_UP));
z="";
}
if(f=='?')
{
k=Math.sqrt(m);
addText.setText(""+new BigDecimal(k).setScale(3, BigDecimal.ROUND_HALF_UP));
z="";
}
}
if(s==cut)
{
mm=Double.parseDouble(addText.getText().trim());
z="";
}
if(s==copy)
{
mm=Double.parseDouble(addText.getText().trim());
}
if(s==paste)
{
addText.setText(""+mm);
}
}
}