📄 mulcalculator.java
字号:
jpanel[1].add(charButton[7]);
jpanel[1].add(funButton[3]);
jpanel[1].add(funButton[4]);
Container ct=getContentPane();
ct.setLayout(new GridLayout(2,1));
ct.add(jpanel[0]);
ct.add(jpanel[1]);
init=false;
setSize(350,400);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) //事件监听器
{
if(evt.getSource()==copyItem)
{
copystr=printText.getText();
}
if(evt.getSource()==pasteItem)
{
if(copystr!="")
printText.setText(copystr);
}
if(evt.getSource()==aboutCal)
{
String about="功能:加、减、乘、除四则运算\n" +
" 二、八、十、十六进制转换\n" +
"作者:刘 俊\n\n" +
" 2007.12.28";
JOptionPane.showMessageDialog(null,about);
}
if(evt.getSource()==funButton[6])
{ //按下CE键,清0
values=0;
funflag=-1;
numenable=false;
sign=false;
executeable=false;
funcount=0;
printText.setText("0");
}
if(evt.getSource()==funButton[5])
{ //退格键
String bsstr="";
if(funflag==-1 && !numenable)
{ //如果在按“=”后退格,直接清0
numenable=false;
printText.setText("0");
}
else if((printText.getText()).charAt(0)!='-')
{
if((printText.getText()).length()>1)
{
for(int i=0;i<(printText.getText()).length()-1;i++)
bsstr+=(printText.getText()).charAt(i);
printText.setText(bsstr);
}
else
{
numenable=false;
printText.setText("0");
}
}
else
{ //如果有符号,退到第2位置0
if((printText.getText()).length()>2)
{
for(int i=0;i<(printText.getText()).length()-1;i++)
bsstr+=(printText.getText()).charAt(i);
printText.setText(bsstr);
}
else
{
numenable=false;
printText.setText("0");
}
}
}
if(evt.getSource()==charButton[7])
{ //按“+/-”号
if(Double.parseDouble(printText.getText())!=0)
{
buf=printText.getText();
String str="";
if(buf.charAt(0)=='-')
for(int i=1;i<buf.length();i++)
str+=buf.charAt(i);
else
{
str+='-';
str+=buf;
}
values=Double.parseDouble(str);
printText.setText(str);
}
}
for(int i=0;i<6;i++)
{ //按“A、B、C、D、E、F”
if(evt.getSource()==charButton[i])
{
numenable=true;
if((printText.getText()).charAt(0)=='0' && (printText.getText()).length()==1)
printText.setText(Character.toString((char)(65+i)));
else
printText.setText(printText.getText()+(char)(65+i));
}
}
for(int i=0;i<10;i++)
if(evt.getSource()==numButton[i])
{ //响应数字按键
if(numenable) //数字键连续(未有功能键按下)
{ if(sign)
{
if((printText.getText()).charAt(0)!='0')
printText.setText(Integer.toString(i));
else
printText.setText(printText.getText()+Integer.toString(i));
}
else
{
printText.setText(printText.getText()+Integer.toString(i));
}
}
else //数字键重置(有功能键按下)
{
sign=false;
funcount=0;
printText.setText("0");
printText.setText(Integer.toString(i));
numenable=true;
executeable=true;
}
}
if(evt.getSource()==charButton[6] /*&& numenable*/)
{ //小数点
buf=printText.getText();
for(int i=0;i<buf.length();i++)
{
if(buf.charAt(i)=='.')
sign=true;
}
if(!sign)
{
printText.setText(printText.getText()+".");
}
}
for(int i=0;i<5;i++)
{ //功能键
if(evt.getSource()==funButton[i])
{
executeable=true;
funflag=(short)i;
numenable=false;
if(funcount>=1)
perExecute=funflag;
funcount++;
}
}
if(executeable && funflag!=-1 && funcount==1)
{ //执行功能
execute();
perExecute=funflag;
funflag=-1;
}
if(funflag==4)
{ //等号处理
values=Double.parseDouble(printText.getText());
printText.setText(Double.toString(values));
funflag=-1;
perExecute=-1;
numenable=false;
}
}
private void execute()
{ //执行运算
double x=0;
switch(perExecute)//perExecute
{
case 0: //加法
values+=Double.parseDouble(printText.getText());
if(values>=0)
x=values-(long)values;
else
x=(long)values-values;
if((long)values==values || x<0.000000001)
printText.setText(Long.toString((long)values));
else
printText.setText(Double.toString(values));
break;
case 1: //减法
values-=Double.parseDouble(printText.getText());
if(values>=0)
x=values-(long)values;
else
x=(long)values-values;
if((long)values==values || x<0.000000001)
printText.setText(Long.toString((long)values));
else
printText.setText(Double.toString(values));
break;
case 2: //乘法
values*=Double.parseDouble(printText.getText());
if(values>=0)
x=values-(long)values;
else
x=(long)values-values;
if((long)values==values || x<0.000000001)
printText.setText(Long.toString((long)values));
else
printText.setText(Double.toString(values));
break;
case 3: //除法
values/=Double.parseDouble(printText.getText());
if(values>=0)
x=values-(long)values;
else
x=(long)values-values;
if((long)values==values || x<0.000000001)
printText.setText(Long.toString((long)values));
else
printText.setText(Double.toString(values));
break;
default:values=Double.parseDouble(printText.getText());
}
}
private void radioselect()
{ //单选按钮选择
if(radiosel==0)
{
for(int i=0;i<8;i++)
charButton[i].setEnabled(false);
for(int i=0;i<5;i++)
funButton[i].setEnabled(false);
numButton[0].setEnabled(true);
numButton[1].setEnabled(true);
for(int i=2;i<10;i++)
numButton[i].setEnabled(false);
}
if(radiosel==1)
{
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<10;i++)
numButton[i].setEnabled(true);
for(int i=0;i<6;i++)
funButton[i].setEnabled(true);
}
if(radiosel==2)
{
for(int i=0;i<8;i++)
charButton[i].setEnabled(false);
for(int i=0;i<5;i++)
funButton[i].setEnabled(false);
numButton[9].setEnabled(false);
numButton[8].setEnabled(false);
for(int i=0;i<8;i++)
numButton[i].setEnabled(true);
}
if(radiosel==3)
{
for(int i=0;i<6;i++)
charButton[i].setEnabled(true);
charButton[6].setEnabled(false);
charButton[7].setEnabled(false);
for(int i=0;i<10;i++)
numButton[i].setEnabled(true);
for(int i=0;i<5;i++)
funButton[i].setEnabled(false);
}
}
public void itemStateChanged(ItemEvent evt)
{ //单选按钮事件响应接口
for(int i=0;i<4;i++)
if(evt.getSource()==numKindRadio[i]
&& evt.getStateChange()==ItemEvent.SELECTED
&& !init)
{
String longbuf="";
//去掉负号、小数取整
for(int k=0;k<(printText.getText()).length();k++)
{
if((printText.getText()).charAt(k)=='-')
continue;
if((printText.getText()).charAt(k)!='.')
longbuf+=(printText.getText()).charAt(k);
else
break;
}
if(radiosel==0 && i==1)
printText.setText(numerChange.btod(longbuf));
if(radiosel==0 && i==2)
printText.setText(numerChange.btoo(longbuf));
if(radiosel==0 && i==3)
printText.setText(numerChange.btoh(longbuf));
if(radiosel==1 && i==0)
printText.setText(numerChange.dtob(longbuf));
if(radiosel==1 && i==2)
printText.setText(numerChange.dtoo(longbuf));
if(radiosel==1 && i==3)
printText.setText(numerChange.dtoh(longbuf));
if(radiosel==2 && i==0)
printText.setText(numerChange.otob(longbuf));
if(radiosel==2 && i==1)
printText.setText(numerChange.otod(longbuf));
if(radiosel==2 && i==3)
printText.setText(numerChange.otoh(longbuf));
if(radiosel==3 && i==0)
printText.setText(numerChange.htob(longbuf));
if(radiosel==3 && i==1)
printText.setText(numerChange.htod(longbuf));
if(radiosel==3 && i==2)
printText.setText(numerChange.htoo(longbuf));
radiosel=(short)i;
radioselect();
}
}
public static void main(String[] args)
{ //程序入口
MulCalculator app=new MulCalculator();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -