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

📄 mulcalculator.java

📁 多功能计算器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////
// Demo:         MulCalculator
// Create by:    Liujun
//               2007.12.29
////////////////////////////////////////////////////////
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Font;

class numerChange    //该类实现各进制间的转换
{
	public static String dtob(String num) //十进制to二进制
	{
		int i=0,j=0,p=0;
		long n=0;
		String buf="",result="";

		n=Long.parseLong(num);
		short[] numStack=new short[100];
		while(n!=0)
		{
			numStack[p]=(short)(n%2);
			n/=2;
			p++;
		}
		p--;
		while(p>=0)
		{
			result+=Integer.toString(numStack[p]);
			p--;
		}
		if(result=="")result+="0";
		return result;
	}
	public static String dtoo(String num) //十进制to八进制
	{
		//JOptionPane.showMessageDialog(null,"sddfdsf");
		int i=0,j=0,p=0;
		long n=0;
		String buf="",result="";

		n=Long.parseLong(num);
		short[] numStack=new short[100];
		while(n!=0)
		{
			numStack[p]=(short)(n%8);
			n/=8;
			p++;
		}
		p--;
		while(p>=0)
		{
			result+=Integer.toString(numStack[p]);
			p--;
		}
		if(result=="")result+="0";
		return result;
	}
	public static String dtoh(String num) //十进制to十六进制
	{
		//JOptionPane.showMessageDialog(null,"sddfdsf");
		int i=0,j=0,p=0;
		long n=0;
		String buf="",result="";

		n=Long.parseLong(num);
		char[] numStack=new char[100];
		while(n!=0)
		{
			char x='\0';
			int m=(int)(n%16);
			switch(m)
			{
				case 10:x='A';break;
				case 11:x='B';break;
				case 12:x='C';break;
				case 13:x='D';break;
				case 14:x='E';break;
				case 15:x='F';break;
				default:x=(Integer.toString(m)).charAt(0);
			}
			numStack[p]=x;
			n/=16;
			p++;
		}
		p--;
		while(p>=0)
		{
			result+=numStack[p];
			p--;
		}
		if(result=="")result+="0";
		return result;
	}
	public static String btod(String num) //二进制to十进制
	{
		int x=0,y=1,z=0;
		for(int i=num.length()-1;i>=0;i--)
		{
			x=(int)Long.parseLong(Character.toString(num.charAt(i)));
			for(int j=1;j<(num.length()-1)-i+1;j++)
				y=y*2;
			z=z+x*y;
			y=1;
		}
		return Integer.toString(z);
	}
	public static String otod(String num) //八进制to十进制
	{
		int x=0,y=1,z=0;
		for(int i=num.length()-1;i>=0;i--)
		{
			x=(int)Long.parseLong(Character.toString(num.charAt(i)));
			for(int j=1;j<(num.length()-1)-i+1;j++)
				y=y*8;
			z=z+x*y;
			y=1;
		}
		return Integer.toString(z);
	}	
	public static String htod(String num) //十六进制to十进制
	{
		int x=0,y=1,z=0;
		for(int i=num.length()-1;i>=0;i--)
		{
			int r=(int)num.charAt(i);
			switch(r)
			{
				case 65:x=10;break;
				case 66:x=11;break;
				case 67:x=12;break;
				case 68:x=13;break;
				case 69:x=14;break;
				case 70:x=15;break;
				default:x=(int)Long.parseLong(Character.toString(num.charAt(i)));
			}
			
			for(int j=1;j<(num.length()-1)-i+1;j++)
				y=y*16;
			z=z+x*y;
			y=1;
		}
		return Integer.toString(z);
	}	
	public static String btoo(String num) //二进制to八进制
	{
		return dtoo(btod(num));
	}
	public static String btoh(String num) //二进制to十六进制
	{
		return dtoh(btod(num));
	}
	public static String otob(String num) //八进制to二进制
	{
		return dtob(otod(num));
	}
	public static String otoh(String num) //八进制to十六进制
	{
		return dtoh(otod(num));
	}
	public static String htob(String num) //十六进制to二进制
	{
		return dtob(htod(num));
	}
	public static String htoo(String num) //十六进制to八进制
	{
		return dtoo(htod(num));
	}
}

//程序主模块

public class MulCalculator extends JFrame implements ActionListener,ItemListener
{
	private ButtonGroup radioGroup=new ButtonGroup();
	private JRadioButton[] numKindRadio=
	{
		new JRadioButton("二进制  "),
		new JRadioButton("十进制  "),
		new JRadioButton("八进制  "),
		new JRadioButton("十六进制")
	};
	private JButton[] funButton=
	{
		new JButton("+"),
		new JButton("-"),
		new JButton("*"),
		new JButton("/"),
		new JButton("="),
		new JButton("BS←"),
		new JButton("CE"),
	};
	private JButton[] charButton=
	{
		new JButton("A"),
		new JButton("B"),
		new JButton("C"),
		new JButton("D"),
		new JButton("E"),
		new JButton("F"),
		new JButton("."),
		new JButton("+/-")
	};	
	private JButton[] numButton=new JButton[10];
	
	private JPanel[] jpanel=
	{
		new JPanel(),
		new JPanel(),
		new JPanel()
	};
  private JMenuBar  mainMenu = new JMenuBar();
  private JMenu editMenu = new JMenu("编辑");
  private JMenu viewMenu = new JMenu("查看");
  private JMenu helpMenu = new JMenu("帮助");
  private JMenuItem copyItem = new JMenuItem("   复制");
  private JMenuItem pasteItem = new JMenuItem("   粘贴");
    
  private JMenuItem aboutCal = new JMenuItem("   关于计算器");
	
	private JTextField printText=new JTextField(15);
	private String copystr="";
	private short perExecute=-1; //记录前一次操作
	private String buf="";
	private short radiosel=1;	          //radio选择标志
	private double values=0;            //存值
	private short funflag=-1;	          //操作状态
	private boolean numenable=false;    //数字键状态
	private boolean sign=false;         //小数点标志
	private boolean executeable=false;  //执行标志
	private int funcount=0;             //操作计数
	private boolean init=true;
	
	public MulCalculator()
	{
		super("计算器");
		
		//界面设计
		copyItem.addActionListener(this);
		pasteItem.addActionListener(this);
		aboutCal.addActionListener(this);
		for(int i=0;i<4;i++)
		{
			numKindRadio[i].setForeground(new Color(100,30,60));
			numKindRadio[i].addItemListener(this);
			radioGroup.add(numKindRadio[i]);
		}
		funButton[5].setForeground(new Color(200,200,10));
		funButton[6].setForeground(new Color(200,200,10));
		for(int i=0;i<6;i++)
			charButton[i].setForeground(new Color(60,30,200));
		for(int i=0;i<5;i++)
			funButton[i].setForeground(new Color(40,200,10));
		numKindRadio[1].setSelected(true);
		numKindRadio[0].setSelected(false);
		numKindRadio[2].setSelected(false);
		numKindRadio[3].setSelected(false);		
		for(int i=0;i<6;i++)
			charButton[i].setEnabled(false);
		for(int i=6;i<8;i++)
			charButton[i].setEnabled(true);
		for(int i=0;i<6;i++)
			funButton[i].setEnabled(true);
				
		printText.setFont(new Font("黑体",0,36));
		printText.setForeground(new Color(200,0,60));
		printText.setBackground(new Color(219,248,251));
		printText.setText("0");
		printText.setEditable(false);
		editMenu.add(copyItem);
		copyItem.addActionListener(this);
    editMenu.add(pasteItem);
    pasteItem.addActionListener(this);
    helpMenu.add(aboutCal);
    aboutCal.addActionListener(this);
    mainMenu.add(editMenu);
    mainMenu.add(viewMenu);
    mainMenu.add(helpMenu);

		jpanel[2].setLayout(new FlowLayout());
		jpanel[2].add(numKindRadio[0]);
		jpanel[2].add(numKindRadio[1]);
		jpanel[2].add(numKindRadio[2]);
		jpanel[2].add(numKindRadio[3]);  
		
    jpanel[0].setLayout(new BorderLayout());
    jpanel[0].add(mainMenu,BorderLayout.NORTH);
    jpanel[0].add(printText,BorderLayout.CENTER);		
		jpanel[0].add(jpanel[2],BorderLayout.SOUTH);
		  
		for(int i=0;i<10;i++)
		{
			numButton[i]=new JButton(Integer.toString(i));
			numButton[i].addActionListener(this);
		}
		
		for(int i=0;i<7;i++)
		{
			funButton[i].addActionListener(this);
		}
		for(int i=0;i<8;i++)
		{
			charButton[i].addActionListener(this);
		}
		
		jpanel[1].setLayout(new GridLayout(5,5));
		jpanel[1].add(funButton[5]);
		jpanel[1].add(funButton[6]);
		
		jpanel[1].add(charButton[0]);
		jpanel[1].add(charButton[1]);
		jpanel[1].add(charButton[2]);
		jpanel[1].add(numButton[7]);
		jpanel[1].add(numButton[8]);
		jpanel[1].add(numButton[9]);		
		jpanel[1].add(funButton[0]);
		jpanel[1].add(charButton[3]);
		jpanel[1].add(numButton[4]);
		jpanel[1].add(numButton[5]);	
		jpanel[1].add(numButton[6]);
		jpanel[1].add(funButton[1]);
		jpanel[1].add(charButton[4]);
		jpanel[1].add(numButton[1]);		
		jpanel[1].add(numButton[2]);
		jpanel[1].add(numButton[3]);
		jpanel[1].add(funButton[2]);
		jpanel[1].add(charButton[5]);			
		jpanel[1].add(numButton[0]);
		jpanel[1].add(charButton[6]);

⌨️ 快捷键说明

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