📄 caculator未解决十进制以外的数值输入和计算问题.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package caculator;/** * * @author Yuyin Li */import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.lang.*;import java.math.*;//**********************[窗体及功能类]***********************class Window extends JFrame implements ActionListener,KeyListener,ItemListener{ double pi=3.1415926535897932384626433832795; //************--------菜单条相关声明--------************** JMenuBar menubar; JMenu menu0,menu1,menu2,menu3; JMenuItem item0,item1,item2,item3,item4,item5,item6,item7; //item0:退出;item1:复制;item2:粘贴;item3:标准型;item4:科学型;item5:帮助;item6:关于 //**************--------布局相关声明--------************** Box basebox; JPanel panel,panel1,panel2,panel3,panel4,panel22,panel5,panel51,panel52,panel6; //************--------文本框相关声明--------************** JTextField t_show;//主显示框 JLabel Null,Null1,Null2,Null3,Null4,Null5;//为布局而设的空插件 JTextField t_M,t_K,t_K0,t_K1,t_K2;//t_M指示储存器状态,t_K指示括号状态 JTextField b_Ave,b_Sum,b_s,b_Dat; //************----------按钮相关声明--------************** JButton b_Backspace,b_CE,b_C;//操作区按钮 JButton b_MC,b_MR,b_MS,b_Madd;//存储器区按钮 JButton b_0,b_1,b_2,b_3,b_4,b_5,b_6,b_7,b_8,b_9;//数字区按键 JButton b_add,b_sub,b_mul,b_div,b_sqrt,b_dao,b_sign,b_dian,b_deng,b_100;//标准操作按键 JButton Mod,And,Or,Xor,Lsh,Not,Int,A,B,C,D,E,F; JButton b_xy,b_ln,b_log,b_pi,b_x2,b_x3,b_sin,b_cos,b_tan,b_k1,b_k2,b_n,b_FE,b_dms,b_Exp,b_Sta;//科学操作按键 ButtonGroup group1,group2;//单选域 JRadioButton hex,dec,oct,b,j,h,td;//单选扭,hex是十六进制,dec是十进制,oct是八进制,b是二进制,j是角度,h是弧度,td是梯度 //************----------数据相关声明--------************** double d[]={0,0,0,0,0,0,0,0,0,0,0};//数据1~10 String t[]={"0","0","0","0","0","0","0","0","0","0","0"};//数据相应的字符串型 //记录运算符 mark指示当前是那个操作符1-mark1,2-mark2. mark[1],[2]表示 0无 1加 2减 3乘 4除 int mark=1,marks[]={0,0,0,0,0}; int state=1;//记录状态 说明现在输入的是第几个数 int start=0;//记录状态 0说明第一次输入,数字替换以前内容,1说明在尾部添加数字 int deng=0;//记录是否进行过'='运算 0没有 1有 int k1=0,k2=0;//记录括号状态 double Mdate=0;//M储存器内数值 int radio=1;//1记录单选钮选中“角度”,2-弧度 int b_jz=0; Window(String s,int style)//style表征窗体类型 1代表标准型 2代表科学型 { //**************--------窗体设置---------*************** super(s); if(style==1) setBounds(100,100,380,270); else setBounds(100,100,720,330); setVisible(true); setResizable(false); //**************-------菜单条设置--------*************** menubar = new JMenuBar(); menu0 = new JMenu("文件"); menu0.setMnemonic(KeyEvent.VK_F);//设置快捷键ALT+E item0 = new JMenuItem("退出",new ImageIcon("exit.jpg")); item0.addActionListener(this); menu1 = new JMenu("编辑(E)"); menu1.setMnemonic(KeyEvent.VK_E);//设置快捷键Alt+E item1 = new JMenuItem("复制",new ImageIcon("copy.jpg")); item1.addActionListener(this); item2 = new JMenuItem("粘贴",new ImageIcon("cv.jpg")); item2.addActionListener(this); item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK)); menu2 = new JMenu("查看(V)"); menu2.setMnemonic(KeyEvent.VK_V);//设置快捷键Alt+V item3 = new JMenuItem("标准型",new ImageIcon("a.jpg")); item3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose();//释放当前窗口 new Window("标准型计算器",1).setVisible(true); } }); item4 = new JMenuItem("科学型",new ImageIcon("b.jpg")); item4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose();//释放当前窗口 new Window("科学型计算器",2).setVisible(true); } }); menu3 = new JMenu("帮助(H)"); menu3.setMnemonic(KeyEvent.VK_H);//设置快捷键Alt+H item5 = new JMenuItem("帮助",new ImageIcon("help.jpg")); item5.addActionListener(this); item6 = new JMenuItem("关于",new ImageIcon("about.jpg")); item6.addActionListener(this); item7 = new JMenuItem("主页",new ImageIcon("mainweb.jpg")); item7.addActionListener(this); menu0.add(item0);//将item0添加到下拉菜单里去 menu1.add(item1);//将item1添加到下拉菜单里面去 menu1.addSeparator();//设置分割线 menu1.add(item2); menu2.add(item3); menu2.addSeparator(); menu2.add(item4); menu3.add(item5); menu3.addSeparator(); menu3.add(item6); menu3.addSeparator(); menu3.add(item7); menubar.add(menu0); menubar.add(menu1); menubar.add(menu2); menubar.add(menu3); setJMenuBar(menubar); //**************---------面板设置---------************** basebox = Box.createVerticalBox();//设置了一个窗口面板,就是计算器的菜单栏下面的长方形区域 FlowLayout flow = new FlowLayout(); flow.setAlignment(FlowLayout.RIGHT); panel1 = new JPanel(); if (style==1) t_show = new JTextField(32);//显示文本框 else t_show = new JTextField(63);//显示文本框 t_show.setText("0"); t_show.setEditable(false); t_show.setHorizontalAlignment(SwingConstants.RIGHT);//显示右对齐 t_show.setBackground(Color.white); panel1.setLayout(flow); panel1.add(t_show); basebox.add(panel1); panel2 = new JPanel(); panel2.setLayout(flow); t_K2 = new JTextField(5); t_K2.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 t_K2.setText(" -Inv ");//科学型计算器空按钮 t_K2.setEditable(false); t_K1 = new JTextField(5); t_K1.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 t_K1.setText(" -Hyp ");//科学型计算器空按钮 t_K1.setEditable(false); t_K0 = new JTextField(5); t_K0.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 t_K0.setText(" — ");//科学型计算器空按钮 t_K0.setEditable(false); t_K = new JTextField(5); t_K.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 t_K.setText(" — ");//科学型计算器空按钮 t_K.setEditable(false); Null = new JLabel(" "); Null1 = new JLabel(" "); Null2 = new JLabel(" "); Null3 = new JLabel(" "); Null4 = new JLabel(" "); Null5 = new JLabel(" "); t_M = new JTextField(5); t_M.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 t_M.setText(" — ");//标准型型计算器的空按钮 t_M.setEditable(false); b_Ave = new JTextField(5); b_Ave.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 b_Ave.setText(" Ave ");// b_Ave.setEditable(false); b_Sum = new JTextField(5); b_Sum.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 b_Sum.setText(" Sum ");// b_Sum.setEditable(false); b_s = new JTextField(5); b_s.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 b_s.setText(" s ");// b_s.setEditable(false); b_Dat = new JTextField(5); b_Dat.setHorizontalAlignment(SwingConstants.CENTER);//显示右对齐 b_Dat.setText(" Dat ");// b_Dat.setEditable(false); b_Backspace = new JButton(" Backspace "); b_Backspace.setText("<html><font color=red>Backspace</font></html>"); b_CE = new JButton(" CE "); b_CE.setText("<html><font color=red>CE</font></html>"); b_C = new JButton(" C "); b_C.setText("<html><font color=red>C</font></html>"); panel22 = new JPanel(); panel22.setLayout(new GridLayout(1,5,2,1)); if(style==2) { group1 = new ButtonGroup(); hex = new JRadioButton("十六进制",false); hex.addItemListener(this);hex.addActionListener(this);hex.addKeyListener(this); dec = new JRadioButton("十进制",true); dec.addItemListener(this);dec.addActionListener(this);dec.addKeyListener(this); oct = new JRadioButton("八进制",false); oct.addItemListener(this);oct.addActionListener(this);oct.addKeyListener(this); b = new JRadioButton("二进制",false); b.addItemListener(this);b.addActionListener(this);b.addKeyListener(this); group1.add(hex); group1.add(dec); group1.add(oct); group1.add(b); group2 = new ButtonGroup(); j = new JRadioButton("角度",true); j.addItemListener(this);j.addKeyListener(this); h = new JRadioButton("弧度",false); h.addItemListener(this);h.addKeyListener(this); td = new JRadioButton("梯度",false); td.addItemListener(this);td.addKeyListener(this); group2.add(j); group2.add(h); group2.add(td); panel22.add(t_K2); panel22.add(t_K1); panel22.add(t_K); } panel22.add(t_M); if(style==2) { panel5 = new JPanel(); panel5.setLayout(flow); panel5.add(hex); panel5.add(dec); panel5.add(oct); panel5.add(b); panel5.add(Null); panel5.add(j); panel5.add(h); panel5.add(td); basebox.add(panel5); panel6 = new JPanel(); panel6.setLayout(flow); panel6.add(t_K0); panel6.add(Null5); panel6.add(panel22); panel6.add(Null2); panel6.add(b_Backspace); panel6.add(b_CE); panel6.add(b_C); basebox.add(panel6); } else { panel2.add(panel22); panel2.add(Null1); panel2.add(b_Backspace); panel2.add(b_CE); panel2.add(b_C); basebox.add(panel2); } panel = new JPanel(); panel3 = new JPanel(); //声明添加所需按钮 b_MC = new JButton("MC"); b_MC.setText("<html><font color=red>MC</font></html>"); b_MR = new JButton("MR"); b_MR.setText("<html><font color=red>MR</font></html>"); b_MS = new JButton("MS"); b_MS.setText("<html><font color=red>MS</font></html>"); b_Madd = new JButton("M+"); b_Madd.setText("<html><font color=red>M+</font></html>"); b_0 = new JButton("0"); b_0.setText("<html><font color=blue>0</font></html>"); b_1 = new JButton("1"); b_1.setText("<html><font color=blue>1</font></html>"); b_2 = new JButton("2"); b_2.setText("<html><font color=blue>2</font></html>"); b_3 = new JButton("3"); b_3.setText("<html><font color=blue>3</font></html>"); b_4 = new JButton("4"); b_4.setText("<html><font color=blue>4</font></html>"); b_5 = new JButton("5"); b_5.setText("<html><font color=blue>5</font></html>"); b_6 = new JButton("6"); b_6.setText("<html><font color=blue>6</font></html>"); b_7 = new JButton("7"); b_7.setText("<html><font color=blue>7</font></html>"); b_8 = new JButton("8"); b_8.setText("<html><font color=blue>8</font></html>"); b_9 = new JButton("9"); b_9.setText("<html><font color=blue>9</font></html>"); b_add = new JButton("+"); b_add.setText("<html><font color=red>+</font></html>"); b_sub = new JButton("-"); b_sub.setText("<html><font color=red>-</font></html>"); b_mul = new JButton("×"); b_mul.setText("<html><font color=red>×</font></html>"); b_div = new JButton("/"); b_div.setText("<html><font color=red>/</font></html>"); b_deng = new JButton("="); b_deng.setText("<html><font color=red>=</font></html>"); b_dian = new JButton("."); b_dian.setText("<html><font color=blue>.</font></html>"); b_sign = new JButton("+/-"); b_sign.setText("<html><font color=blue>+/-</font></html>"); b_100 = new JButton("%"); b_100.setText("<html><font color=blue>%</font></html>"); b_dao = new JButton("1/x"); b_dao.setText("<html><font color=blue>1/x</font></html>"); b_sqrt = new JButton("sqrt"); b_sqrt.setText("<html><font color=blue>sqrt</font></html>"); Mod = new JButton("Mod"); Mod.setText("<html><font color=red>Mod</font></html>"); And = new JButton("And"); And.setText("<html><font color=red>And</font></html>"); Or = new JButton("Or"); Or.setText("<html><font color=red>Or</font></html>"); Xor = new JButton("Xor"); Xor.setText("<html><font color=red>Xor</font></html>"); Lsh = new JButton("Lsh"); Lsh.setText("<html><font color=red>Lsh</font></html>"); Not = new JButton("Not"); Not.setText("<html><font color=red>Not</font></html>"); Int = new JButton("Int"); A = new JButton("A"); B = new JButton("B"); C = new JButton("C"); D = new JButton("D"); E = new JButton("E"); F = new JButton("F"); if (style == 2) { panel3.setLayout(new GridLayout(5,6,3,2)); panel3.add(b_7); panel3.add(b_8); panel3.add(b_9); panel3.add(b_div); panel3.add(Mod) ; panel3.add(And); panel3.add(b_4); panel3.add(b_5); panel3.add(b_6); panel3.add(b_mul); panel3.add(Or); panel3.add(Xor); panel3.add(b_1); panel3.add(b_2); panel3.add(b_3); panel3.add(b_sub); panel3.add(Lsh); panel3.add(Not); panel3.add(b_0); panel3.add(b_sign);panel3.add(b_dian);panel3.add(b_add); panel3.add(b_deng); panel3.add(Int); panel3.add(A); panel3.add(B); panel3.add(C); panel3.add(D); panel3.add(E); panel3.add(F); } else { panel3.setLayout(new GridLayout(4,6,3,2)); panel3.add(b_MC); panel3.add(b_7); panel3.add(b_8); panel3.add(b_9); panel3.add(b_div); panel3.add(b_sqrt); panel3.add(b_MR); panel3.add(b_4); panel3.add(b_5); panel3.add(b_6); panel3.add(b_mul);panel3.add(b_100); panel3.add(b_MS); panel3.add(b_1); panel3.add(b_2); panel3.add(b_3); panel3.add(b_sub); panel3.add(b_dao); panel3.add(b_Madd);panel3.add(b_0); panel3.add(b_sign);panel3.add(b_dian);panel3.add(b_add); panel3.add(b_deng); } panel.setLayout(flow); panel4 = new JPanel(); if (style==2) { panel4.setLayout(new GridLayout(5,4,3,2)); b_xy = new JButton("x^y"); b_xy.setText("<html><font color=purple>x^y</font></html>"); b_ln = new JButton("ln"); b_ln.setText("<html><font color=purple>ln</font></html>"); b_log = new JButton("log"); b_log.setText("<html><font color=purple>log</font></html>"); b_pi = new JButton("pi"); b_pi.setText("<html><font color=blue>pi</font></html>"); b_x2 = new JButton("x^2"); b_x2.setText("<html><font color=purple>x^2</font></html>"); b_x3 = new JButton("x^3"); b_x3.setText("<html><font color=purple>x^3</font></html>"); b_k1 = new JButton("("); b_k1.setText("<html><font color=purple>(</font></html>"); b_k2 = new JButton(")"); b_k2.setText("<html><font color=purple>)</font></html>"); b_sin = new JButton("sin"); b_sin.setText("<html><font color=purple>sin</font></html>"); b_cos = new JButton("cos"); b_cos.setText("<html><font color=purple>cos</font></html>"); b_tan = new JButton("tan"); b_tan.setText("<html><font color=purple>tan</font></html>"); b_n = new JButton("n!"); b_n.setText("<html><font color=purple>n!</font></html>"); b_FE = new JButton("F-E"); b_FE.setText("<html><font color=purple>F-E</font></html>"); b_dms = new JButton("dms"); b_dms.setText("<html><font color=purple>dms</font></html>"); b_Exp = new JButton("Exp"); b_Exp.setText("<html><font color=purple>Exp</font></html>"); b_dao.setText("<html><font color=purple>1/x</font></html>"); b_Sta = new JButton("Sta"); b_Sta.setText("<html><font color=blue>Sta</font></html>"); panel4.add(b_FE); panel4.add(b_k1); panel4.add(b_k2); panel4.add(b_MC); panel4.add(b_dms); panel4.add(b_Exp); panel4.add(b_ln); panel4.add(b_MR); panel4.add(b_sin); panel4.add(b_xy); panel4.add(b_log); panel4.add(b_MS); panel4.add(b_cos); panel4.add(b_x3); panel4.add(b_n); panel4.add(b_Madd); panel4.add(b_tan); panel4.add(b_x2); panel4.add(b_dao); panel4.add(b_pi); panel52 = new JPanel(); panel52.setLayout(new GridLayout(5,1,3,2)); panel52.add(b_Sta); panel52.add(b_Ave); panel52.add(b_Sum); panel52.add(b_s); panel52.add(b_Dat);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -