📄 mulcalculator.java
字号:
////////////////////////////////////////////////////////
// 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 + -