⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caculator_未解决十进制以外的数值输入和计算问题.java

📁 Java 语言实现的计算器
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* * 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_K0);                        //panel22.add(Null5);			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("/");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -