📄 calculator.java
字号:
isDot=false;
isOperandBegin=true;
}
isOperandBegin=true;
isDot=false;
} catch (ParseException e) {
e.printStackTrace();
}
}
});
//创建0按钮
btn0=new JButton("0");
btn0.setForeground(Color.BLUE);
btn0.setMargin(new Insets(0,1,2,1));
container.add(btn0);
btn0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(isError==true){
return;
}
if(isExp==true&&rbDecimalism.isSelected()){
//按科学记数法输入
int explength=displayField.getText().length()-displayField.getText().indexOf("+");
if(explength>4){
return;
}
if(displayField.getText().indexOf("E+0")!=-1){
displayField.setText(displayField.getText().substring(0,displayField.getText().length()-1)+"0");
return;
}
else{
displayField.setText(displayField.getText()+"0");
return;
}
}
if(rbHexadecimal.isSelected()||rbOctal.isSelected()||rbBinary.isSelected()){
if(rbHexadecimal.isSelected()&&displayField.getText().length()>=16){
return;
}
if(rbOctal.isSelected()&&displayField.getText().length()>=22){
return;
}
if(rbBinary.isSelected()){
if(rbDQ.isSelected()&&displayField.getText().length()>=64){
return;
}else if(rbDD.isSelected()&&displayField.getText().length()>=32){
return;
}else if(rbDW.isSelected()&&displayField.getText().length()>=16){
return;
}else if(rbDB.isSelected()&&displayField.getText().length()>=8){
return;
}
}
if(isOperandBegin==true||displayField.getText().equals("0")){
displayField.setText("0");
isOperandBegin=false;
}
else{
displayField.setText(displayField.getText()+"0");
}
return;
}
try {
String displayStr = displayField.getText();
if(isOperandBegin==true){
displayField.setText("0.");
isOperandBegin=false;
return;
}
if(displayStr.replace(",","").length()>=32){
return;
}
if(java.lang.Double.parseDouble(displayStr.replace(",",""))==0&&isDot==true){
displayField.setText(displayStr+"0");
return;
}
//基于格式的解析
DecimalFormat df=new DecimalFormat();
df.setParseBigDecimal(true);
Object obj= null;
obj = df.parse(displayStr);
if(obj.toString().length()>=32){
return;
}
BigDecimal bdobj=new BigDecimal(obj.toString());
StringBuffer sb=null;
if(isDot==true&&bdobj.toString().indexOf(".")==-1){
sb= new StringBuffer(bdobj.toString()+".");
sb.append("0");
BigDecimal bd = new BigDecimal(sb.toString());
displayField.setText(bd.toString());
}
else if(isDot==true){
displayField.setText(displayStr+"0");
}
else{
sb= new StringBuffer(bdobj.toString());
sb.append("0");
BigDecimal bd = new BigDecimal(sb.toString());
displayField.setText(decimalismFormat.format(bd));
}
}
catch (ParseException pe0)
{
}
}
});
//创建1按钮
btn1=new JButton("1");
btn1.setForeground(Color.BLUE);
btn1.setMargin(new Insets(0,1,2,1));
container.add(btn1);
btn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建2按钮
btn2=new JButton("2");
btn2.setForeground(Color.BLUE);
btn2.setMargin(new Insets(0,1,2,1));
container.add(btn2);
btn2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建3按钮
btn3=new JButton("3");
btn3.setForeground(Color.BLUE);
btn3.setMargin(new Insets(0,1,2,1));
container.add(btn3);
btn3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建4按钮
btn4=new JButton("4");
btn4.setForeground(Color.BLUE);
btn4.setMargin(new Insets(0,1,2,1));
container.add(btn4);
btn4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建5按钮
btn5=new JButton("5");
btn5.setForeground(Color.BLUE);
btn5.setMargin(new Insets(0,1,2,1));
container.add(btn5);
btn5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建6按钮
btn6=new JButton("6");
btn6.setForeground(Color.BLUE);
btn6.setMargin(new Insets(0,1,2,1));
container.add(btn6);
btn6.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建7按钮
btn7=new JButton("7");
btn7.setForeground(Color.BLUE);
btn7.setMargin(new Insets(0,1,2,1));
container.add(btn7);
btn7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建8按钮
btn8=new JButton("8");
btn8.setForeground(Color.BLUE);
btn8.setMargin(new Insets(0,1,2,1));
container.add(btn8);
btn8.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建9按钮
btn9=new JButton("9");
btn9.setForeground(Color.BLUE);
btn9.setMargin(new Insets(0,1,2,1));
container.add(btn9);
btn9.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建A按钮
btnA=new JButton("A");
btnA.setForeground(Color.BLUE);
btnA.setMargin(new Insets(0,1,2,1));
container.add(btnA);
btnA.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建B按钮
btnB=new JButton("B");
btnB.setForeground(Color.BLUE);
btnB.setMargin(new Insets(0,1,2,1));
container.add(btnB);
btnB.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建C按钮
btnC=new JButton("C");
btnC.setForeground(Color.BLUE);
btnC.setMargin(new Insets(0,1,2,1));
container.add(btnC);
btnC.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建D按钮
btnD=new JButton("D");
btnD.setForeground(Color.BLUE);
btnD.setMargin(new Insets(0,1,2,1));
container.add(btnD);
btnD.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建E按钮
btnE=new JButton("E");
btnE.setForeground(Color.BLUE);
btnE.setMargin(new Insets(0,1,2,1));
container.add(btnE);
btnE.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建F按钮
btnF=new JButton("F");
btnF.setForeground(Color.BLUE);
btnF.setMargin(new Insets(0,1,2,1));
container.add(btnF);
btnF.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
inputNumber(e);
}
});
//创建+/-按钮
btnSign=new JButton("+/-");
btnSign.setForeground(Color.BLUE);
btnSign.setMargin(new Insets(0,1,2,1));
container.add(btnSign);
btnSign.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(isError==true){
return;
}
String displayStr = displayField.getText();
StringBuffer sb=new StringBuffer(displayStr);
if(displayStr.equals("0.")&&isDot==false){
return;
}
if(sb.charAt(0)=='-'){
sb.deleteCharAt(0);
}
else{
sb.insert(0,'-');
}
displayField.setText(sb.toString());
}
});
//创建.按钮
btnDot=new JButton(".");
btnDot.setForeground(Color.BLUE);
btnDot.setMargin(new Insets(0,1,2,1));
container.add(btnDot);
btnDot.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(isError==true||rbHexadecimal.isSelected()||rbOctal.isSelected()||rbBinary.isSelected()){
return;
}
if(isOperandBegin==true){
displayField.setText("0.");
}
isOperandBegin=false;
isDot=true;
}
});
//创建/按钮
btnDivide=new JButton("/");
btnDivide.setForeground(Color.RED);
btnDivide.setMargin(new Insets(0,1,2,1));
container.add(btnDivide);
btnDivide.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(viewMenu_standarType.isSelected()){
setOperatorForStandar(e);
}
else{
setOperatorForScience(e);
}
}
});
//创建*按钮
btnMultiply=new JButton("*");
btnMultiply.setForeground(Color.RED);
btnMultiply.setMargin(new Insets(0,1,2,1));
container.add(btnMultiply);
btnMultiply.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(viewMenu_standarType.isSelected()){
setOperatorForStandar(e);
}
else{
setOperatorForScience(e);
}
}
});
//创建-按钮
btnMinus=new JButton("-");
btnMinus.setForeground(Color.RED);
btnMinus.setMargin(new Insets(0,1,2,1));
container.add(btnMinus);
btnMinus.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(viewMenu_standarType.isSelected()){
setOperatorForStandar(e);
}
else{
setOperatorForScience(e);
}
}
});
//创建+按钮
btnPlus=new JButton("+");
btnPlus.setForeground(Color.RED);
btnPlus.setMargin(new Insets(0,1,2,1));
container.add(btnPlus);
btnPlus.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(viewMenu_standarType.isSelected()){
setOperatorForStandar(e);
}
else{
setOperatorForScience(e);
}
}
});
//创建=按钮
btnEqualSign=new JButton("=");
btnEqualSign.setForeground(Color.RED);
btnEqualSign.setMargin(new Insets(0,1,2,1));
container.add(btnEqualSign);
btnEqualSign.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(isError==true||(isOperandBegin&&command.equals("="))){
return;
}
if(viewMenu_scienceType.isSelected()){
if(lbracketNum>0){
//必须补全右括弧方可进行整个式子的计算
return;
}
setOperatorForScience(e);
return;
}
String tempStr=getPlainStr(displayField.getText());
if(isFirstEqual){
secondOperand=tempStr;
calculateStandar(tempStr);
isOperandBegin=true;
isFirstEqual=false;
}
else
{
calculateStandar(secondOperand);
isOperandBegin=true;
}
isFirstOprator=true;
isDot=false;
canExp=false;
cbInv.setSelected(false);
cbHyp.setSelected(false);
}
});
//创建sqrt按钮
btnSqrt=new JButton("sqrt");
btnSqrt.setForeground(Color.BLUE);
btnSqrt.setMargin(new Insets(0,1,2,1));
container.add(btnSqrt);
btnSqrt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(isError==true){
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -