📄 calculator.java
字号:
this.setDefaultCloseOperation(3);
} // 构造方法完毕---------构造完毕-------构造完毕-----构造完毕------构造完毕-----构造完毕------构造完毕-----构造完毕------------
/***********#####################################$$$$$$$$$$$$$$$$$$事件的处理$$$$$$$$$$$$$$$$$###################################***********************/
public void actionPerformed(ActionEvent e)
{
//--------------------------------------item[0]--item[18]-----以下事对-菜单项-单选框-事件的处理----jrb[0]--jrb[10]--------------------------------------------------
if(e.getSource()==item[0])//粘贴
{
}
if(e.getSource()==item[1])//复制
{}
if(e.getSource()==item[2])//标准型
{
item[2].setText("● 标准型(I)");
item[3].setText(" 科学型(S)");
menu2.removeAll();
menu2.insert(item[2], 1);
menu2.insert(item[3], 2);
menu2.insertSeparator(2);
menu2.insert(item[15], 3);
textField1.setBounds(10, 0, 240, 25);
jp.setVisible(false);
jp1.setVisible(false);
jp7.setVisible(false);
jc1.setVisible(false);
jc2.setVisible(false);
jl4.setVisible(false);
jp3.setVisible(false);
jp4.setVisible(false);
jb[24].setVisible(false);
jb[33].setVisible(false);
jb[39].setVisible(false);
jb[45].setVisible(false);
jb[32].setText("sqrt");
jb[32].setForeground(Color.BLUE);
jb[38].setText("%");
jb[44].setText("1/x");
jb[44].setForeground(Color.BLUE);
for(int i=51;i<58;i++)
jb[i].setVisible(false);
this.setBounds(300,300,265,245);
jl5.setBounds(10, 35, 25, 25);
jp2.setBounds(50,35,197,25);
jp5.setBounds(5, 70, 35, 150);
jp6.setBounds(50, 70, 240, 150);
}
if(e.getSource()==item[3])//科学性
{
item[2].setText(" 标准型(I)");
item[3].setText("● 科学型(S)");
menu2.removeAll();
for(int i=2;i<16;i++)
{
menu2.add(item[i]);
if(i==3||i==7||i==14)
menu2.addSeparator();
}
textField1.setBounds(40,0,450,25);
jp.setVisible(true);
if(jrb[1].isSelected())
jp1.setVisible(true);
else
jp7.setVisible(true);
jc1.setVisible(true);
jc2.setVisible(true);
jl4.setVisible(true);
jp3.setVisible(true);
jp4.setVisible(true);
jb[24].setVisible(true);
jb[33].setVisible(true);
jb[39].setVisible(true);
jb[45].setVisible(true);
jb[32].setText("Mod");
jb[32].setForeground(Color.red);
jb[38].setText("Or");
jb[38].setForeground(Color.red);
jb[44].setText("Lsh");
jb[44].setForeground(Color.red);
for(int i=51;i<58;i++)
jb[i].setVisible(true);
this.setBounds(300,300,535,300);
jl5.setBounds(175, 55, 25, 25);
jp2.setBounds(320,55,197,25);
jp5.setBounds(190, 85, 35, 150);
jp6.setBounds(300, 85, 222, 150);
}
//对左边radiobutton的处理-----------------
try{
if(e.getSource()==item[4]||e.getSource()==jrb[0]) //十六进制
{
jp1.setVisible(false);
jp7.setVisible(true);
item[4].setText("● 十六进制(H)");
item[5].setText(" 十进制(D)");
item[6].setText(" 八进制(O)");
item[7].setText(" 二进制(B)");
item[8].setVisible(false);
item[9].setVisible(false);
item[10].setVisible(false);
item[11].setVisible(true);
item[12].setVisible(true);
item[13].setVisible(true);
item[14].setVisible(true);
jrb[0].setSelected(true);
for(int i=52;i<58;i++) //使ABCDEF有效
jb[i].setEnabled(true);
clickable=false; //使小数点无效
jb[28].setEnabled(true);
jb[29].setEnabled(true);
jb[30].setEnabled(true);
jb[34].setEnabled(true);
jb[35].setEnabled(true);
jb[36].setEnabled(true);
jb[41].setEnabled(true);
jb[42].setEnabled(true); //以上八个是被二进制屏蔽了的
jb[5].setEnabled(false);
jb[8].setEnabled(false);
jb[9].setEnabled(false);
jb[11].setEnabled(false);
jb[14].setEnabled(false);
jb[17].setEnabled(false);
jb[24].setEnabled(false);
String hex=textField1.getText();
int inthex=Integer.parseInt(hex, jinzhi);//先把数变为10进制
textField1.setText(convert.decHex(inthex)) ;
jinzhi=16;
}
if(e.getSource()==item[5]||e.getSource()==jrb[1]) //十进制
{
jp1.setVisible(true);
jp7.setVisible(false);
item[4].setText(" 十六进制(H)");
item[5].setText("● 十进制(D)");
item[6].setText(" 八进制(O)");
item[7].setText(" 二进制(B)");
item[8].setVisible(true);
item[9].setVisible(true);
item[10].setVisible(true);
item[11].setVisible(false);
item[12].setVisible(false);
item[13].setVisible(false);
item[14].setVisible(false);
jrb[1].setSelected(true);
for(int i=52;i<58;i++)
jb[i].setEnabled(false);
clickable=true;
jb[28].setEnabled(true);
jb[29].setEnabled(true);
jb[30].setEnabled(true);
jb[34].setEnabled(true);
jb[35].setEnabled(true);
jb[36].setEnabled(true);
jb[41].setEnabled(true);
jb[42].setEnabled(true); //以上八个是被二进制屏蔽了的
jb[5].setEnabled(true);
jb[8].setEnabled(true);
jb[9].setEnabled(true);
jb[11].setEnabled(true);
jb[14].setEnabled(true);
jb[17].setEnabled(true);
jb[24].setEnabled(true);
String dec=textField1.getText();
int intdec=Integer.parseInt(dec,jinzhi);
// textField1.setText(convert.decDec(intdec)); //本句会把123变成321
textField1.setText(intdec+"");
jinzhi=10;
}
if(e.getSource()==item[6]||e.getSource()==jrb[2]) //八进制
{
jp1.setVisible(false);
jp7.setVisible(true);
item[4].setText(" 十六进制(H)");
item[5].setText(" 十进制(D)");
item[6].setText("● 八进制(O)");
item[7].setText(" 二进制(B)");
item[8].setVisible(false);
item[9].setVisible(false);
item[10].setVisible(false);
item[11].setVisible(true);
item[12].setVisible(true);
item[13].setVisible(true);
item[14].setVisible(true);
jrb[2].setSelected(true);
for(int i=52;i<58;i++)
jb[i].setEnabled(false);
clickable=false;
jb[5].setEnabled(false);
jb[8].setEnabled(false);
jb[9].setEnabled(false);
jb[11].setEnabled(false);
jb[14].setEnabled(false);
jb[17].setEnabled(false);
jb[24].setEnabled(false); //以上七个是被二进制屏蔽了的
jb[29].setEnabled(false);
jb[30].setEnabled(false);
jb[28].setEnabled(true);
jb[34].setEnabled(true);
jb[35].setEnabled(true);
jb[36].setEnabled(true);
jb[41].setEnabled(true);
jb[42].setEnabled(true);
String oct =textField1.getText();
int intoct=Integer.parseInt(oct,jinzhi);
textField1.setText(convert.decOct(intoct)) ;
jinzhi=8;
}
if(e.getSource()==item[7]||e.getSource()==jrb[3]) //二进制
{
jp1.setVisible(false);
jp7.setVisible(true);
item[4].setText(" 十六进制(H)");
item[5].setText(" 十进制(D)");
item[6].setText(" 八进制(O)");
item[7].setText("● 二进制(B)");
item[8].setVisible(false);
item[9].setVisible(false);
item[10].setVisible(false);
item[11].setVisible(true);
item[12].setVisible(true);
item[13].setVisible(true);
item[14].setVisible(true);
jrb[3].setSelected(true);
for(int i=52;i<58;i++)
jb[i].setEnabled(false);
clickable=false;
jb[28].setEnabled(false);
jb[29].setEnabled(false);
jb[30].setEnabled(false);
jb[34].setEnabled(false);
jb[35].setEnabled(false);
jb[36].setEnabled(false);
jb[41].setEnabled(false);
jb[42].setEnabled(false);
jb[5].setEnabled(false);
jb[8].setEnabled(false);
jb[9].setEnabled(false);
jb[11].setEnabled(false);
jb[14].setEnabled(false);
jb[17].setEnabled(false);
jb[24].setEnabled(false);
String bin=textField1.getText();
int intbin=Integer.parseInt(bin,jinzhi);
textField1.setText(convert.decBin(intbin));
jinzhi=2;
// textField1.setText(Integer.parseInt(textField1.getText(),2)+"");
}
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(this,"转换格式不对\n请输入正确格式!","出错啦!",0);
}
//对右边radiobutton的处理--------------------
if(e.getSource()==item[8]||e.getSource()==jrb[4])
{
item[8].setText("● 角度(E)");
item[9].setText(" 弧度(R)");
item[10].setText(" 梯度(G)");
jrb[4].setSelected(true);
degree=true;
radian=false;
grads=false;
}
if(e.getSource()==item[9]||e.getSource()==jrb[5])
{
item[8].setText(" 角度(E)");
item[9].setText("● 弧度(R)");
item[10].setText(" 梯度(G)");
jrb[5].setSelected(true);
degree=false;
radian=true;
grads=false;
}
if(e.getSource()==item[10]||e.getSource()==jrb[6])
{
item[8].setText(" 角度(E)");
item[9].setText(" 弧度(R)");
item[10].setText("● 梯度(G)");
jrb[6].setSelected(true);
degree=false;
radian=false;
grads=true;
}
//对右边第二组即非十进制的radiobotton的处理###############################
if(e.getSource()==item[11]||e.getSource()==jrb[7])
{
item[11].setText("● 四字(Q)");
item[12].setText(" DWORD(R)");
item[13].setText(" 单字(W)");
item[14].setText(" 字节(Y)");
jrb[7].setSelected(true);
}
if(e.getSource()==item[12]||e.getSource()==jrb[8])
{
item[11].setText(" 四字(Q)");
item[12].setText("● DWORD(R)");
item[13].setText(" 单字(W)");
item[14].setText(" 字节(Y)");
jrb[8].setSelected(true);
}
if(e.getSource()==item[13]||e.getSource()==jrb[9])
{
item[11].setText(" 四字(Q)");
item[12].setText(" DWORD(R)");
item[13].setText("● 单字(W)");
item[14].setText(" 字节(Y)");
jrb[9].setSelected(true);
}
if(e.getSource()==item[14]||e.getSource()==jrb[10])
{
item[11].setText(" 四字(Q)");
item[12].setText(" DWORD(R)");
item[13].setText(" 单字(W)");
item[14].setText("● 字节(Y)");
jrb[10].setSelected(true);
}
if(e.getSource()==item[15])
{} //暂时还不知道“数字分组”有什么用哈,,呵呵
//帮助菜单------------------------------
if(e.getSource()==item[16])
{
String filePath = "C:/WINDOWS/Help/calc.chm";
try {
Runtime.getRuntime().exec("cmd.exe /c "+filePath);
} catch (IOException e1) {
// TODO Auto-generated catch block
System.out.println("打开系统帮助文档出错!");
e1.printStackTrace();
}
}
if(e.getSource()==item[17])
{
JOptionPane.showMessageDialog(this,"Java计算器:\n09年情人节光棍版\n作者:快乐至上\n作者主页:\n http://user.qzone.qq.com/431284719","关于计算器",1);
}
if(e.getSource()==item[18])
{
try {
Process p = Runtime.getRuntime().exec("explorer http://user.qzone.qq.com/431284719");
} catch (IOException e1) {
// TODO Auto-generated catch block
System.out.println("打开网页出错!");
e1.printStackTrace();
}
}
//--------------------------------------------------------------------按钮事件的处理-------------------------------------------------------------------------------------
//退格jb[25]-------------------------
if(e.getSource()==jb[25])
{
if(textField1.getText().equals("0.")==false)//如果输入框中为“0.”则退格键无效
{
String s=textField1.getText();
if(s.length()==1) //当输入框中只有一个数时直接归为“0.”
textField1.setText("0.");
else
{
textField1.setText("");
for(int i = 0;i<s.length()-1;i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -