java Swing 简单计算器实现
用java swing 写了一个计算器的图形。
其实图形部分并不多,目前不仅有图形,还能输入并显示,只是没有计算功能,点击按钮显示相对输入,在对输入规则上费了一些时间
1 package myJavaSwing; 2 3 import jdk.internal.cmm.SystemResourcePressureImpl; 4 import sun.awt.image.BufImgSurfaceData; 5 import sun.plugin2.ipc.windows.WindowsIPCFactory; 6 7 import javax.swing.*; 8 import javax.swing.border.Border; 9 import javax.swing.border.LineBorder; 10 import javax.swing.plaf.metal.MetalBorders; 11 import java.awt.*; 12 import java.awt.event.ActionEvent; 13 import java.awt.event.ActionListener; 14 import java.math.*; 15 16 public class myJavaSwing{ 17 JFrame frame; 18 JPanel panel; 19 JButton[][] buttons; 20 JTextField resultShow; 21 JTextField resultShow2; 22 String inputString; 23 buttonAction Action; 24 int row; //偏移量 25 int line; 26 boolean calFlag; //是否科学计算器,按钮布局和功能差异 27 static Double E = 2.7182818285; 28 static Double PI = 3.1415926536; 29 30 31 public myJavaSwing(){ 32 this(false); 33 } 34 35 /** 36 * 构造方法 新建 frame panel等实例,其他啥也不做 37 * 其他东西全在lunch里面了 38 * @param isScin 39 */ 40 public myJavaSwing(boolean isScin) 41 { 42 frame = new JFrame("小小计算器"); //新建frame 设置标题 43 panel = new JPanel(); //创建面板 44 Action = new buttonAction(); //创建监听实例 45 inputString = new String("0"); //初始显示0 46 resultShow = new JTextField(); 47 resultShow2 = new JTextField(); 48 calFlag = isScin; //是否科学计算器 49 //居中显示 50 51 52 } 53 54 /** 55 * 用于在普通界面 和plus 之间切换 56 * 就重新构建panel视图 57 */ 58 public void lunchChange(){ 59 frame.setVisible(false); 60 frame = new JFrame("小小计算器"); 61 panel = new JPanel(); 62 calFlag = !calFlag; 63 frame.setVisible(true); 64 panel.setVisible(true); 65 lunch(); 66 } 67 68 /** 69 * 负责初始化按钮 70 * 文字框,设定属性,并显示出来 71 */ 72 public void lunch(){ 73 frame.setSize(400,700); //设置frame大小 74 frame.setLayout(new GridBagLayout()); //使用 表格包布局 75 frame.setResizable(false); //frame大小不可改变 76 frame.setLocationRelativeTo(null); 77 if(calFlag){ //设置是否科学计算器 78 row = 2; 79 line = 1; 80 }else{ 81 row = 0; 82 line = 0; 83 } 84 buttons = new JButton[6 + row][5 + line]; 85 for (int i = 1; i <= 3;i++) { 86 for (int j = 1;j <= 3;j++){ 87 buttons[i + 1 + row][j + line] = new JButton(9 - (3*i) + j + ""); 88 } 89 } 90 91 buttons[1 + row][line + 1] = new JButton("清零"); 92 buttons[1 + row][line + 2] = new JButton("删除"); 93 buttons[1 + row][line + 3] = new JButton("÷"); 94 buttons[1 + row][line + 4] = new JButton("*"); 95 buttons[2 + row][line + 4] = new JButton("-"); 96 buttons[3 + row][line + 4] = new JButton("+"); 97 buttons[4 + row][line + 4] = new JButton("="); 98 buttons[5 + row][line + 1] = new JButton("切换"); 99 buttons[5 + row][line + 2] = new JButton("0"); 100 buttons[5 + row][line + 3] = new JButton("."); 101 buttons[5 + row][line + 4] = new JButton("none"); 102 103 if(calFlag){ //为科学计算器设置按钮 104 105 106 buttons[5 + row][line + 1].setText("%"); 107 108 buttons[1][1] = new JButton("切换"); 109 buttons[1][2] = new JButton("2nd"); 110 buttons[1][3] = new JButton("sin("); 111 buttons[1][4] = new JButton("cos("); 112 buttons[1][5] = new JButton("tan("); 113 114 buttons[2][1] = new JButton("^"); 115 buttons[2][2] = new JButton("lg("); 116 buttons[2][3] = new JButton("ln("); 117 buttons[2][4] = new JButton("("); 118 buttons[2][5] = new JButton(")"); 119 120 buttons[3][1] = new JButton("√"); 121 buttons[4][1] = new JButton("n!"); 122 buttons[5][1] = new JButton("1/X"); 123 buttons[6][1] = new JButton("π"); 124 buttons[7][1] = new JButton("e"); 125 } 126 127 //设置所有按钮的属性 128 for (int i = 1; i <= 5 + row;i++) { 129 for (int j = 1;j <= 4 + line;j++){ 130 try{ 131 buttons[i][j].setBackground(new Color(250, 250, 250,100)); 132 buttons[i][j].setFont(new Font("Arabic", Font.PLAIN, 20)); 133 buttons[i][j].setBorder(BorderFactory.createLineBorder(Color.black,0,true)); 134 buttons[i][j].addActionListener(Action); 135 }catch (NullPointerException e) { 136 System.out.println("NO." + i + row + "row " + j + line + "line NULLPOINTER" ); 137 } 138 } 139 } 140 141 142 resultShow.setHorizontalAlignment(SwingConstants.RIGHT);//文字右对齐 143 resultShow.setColumns(18); //设置文本框的列数是18 144 //resultShow.setBackground(Color.black); 145 resultShow.setEditable(false); //不可编辑 146 //resultShow.setText("0"); 147 //resultShow.setSize(400,100); 148 resultShow.setFont(new Font("null",Font.BOLD,40)); 149 resultShow.setBorder(null); 150 151 GridBagConstraints contains = new GridBagConstraints(); 152 contains.weightx = 0.5; //多余部分占用比例 ????? 153 contains.weighty = 1; 154 contains.gridx = 1; 155 contains.gridy = 1; 156 contains.gridwidth = 4 + row; 157 contains.gridheight = 1; 158 contains.fill = GridBagConstraints.HORIZONTAL; 159 160 this.frame.add(resultShow,contains); 161 contains.gridx = 1; 162 contains.gridy = 2; 163 164 resultShow2.setHorizontalAlignment(SwingConstants.RIGHT);//文字右对齐 165 resultShow2.setColumns(18); //设置文本框的列数是18 166 resultShow2.setText(inputString); 167 resultShow2.setEditable(false); //不可编辑 168 resultShow2.setSize(400,80); 169 resultShow2.setFont(new Font("null",Font.BOLD,40)); 170 resultShow2.setBorder(null); 171 172 this.frame.add(resultShow2,contains); 173 174 175 contains.fill = GridBagConstraints.BOTH; 176 contains.gridheight = 1; //占用行列 177 contains.gridwidth = 1; 178 for (int i = 1; i <= 5 + row;i++) { 179 for (int j = 1;j <= 4 + line;j++){ 180 if (i == 4 + row && j == 4 + line){ 181 contains.gridheight = 2; //占用行列 182 contains.gridwidth = 1; 183 contains.gridx = j; // 行和列 184 contains.gridy = i + 2; 185 this.frame.add(buttons[i][j],contains); 186 contains.gridheight = 1; 187 }else if (i != 5 + row || j != 4 + line ){ 188 contains.gridx = j; // 行和列 189 contains.gridy = i + 2; 190 this.frame.add(buttons[i][j],contains); 191 } 192 String str = buttons[i][j].getText(); 193 System.out.println(str); 194 } 195 } 196 //全部好了,让他显示出来 197 this.frame.setVisible(true); 198 } 199 200 public void freshResult(String s){ 201 this.resultShow.setText(s.replace(" ","")); 202 } 203 public void freshResultShow2(){ 204 System.out.println("当前内容:" + inputString); 205 if (inputString.length() != 0){ 206 this.resultShow2.setText(this.inputString.replace(" ","")); 207 }else { 208 this.resultShow2.setText("0"); 209 } 210 211 } 212 213 /**写出来用于解析并计算的类 214 * 这是 215 */ 216 class Calculator{ 217 String exp; 218 219 Calculator(){ 220 this("0"); 221 } 222 Calculator(String s){ 223 exp = s; 224 } 225 226 public Double getAnser(){ 227 int i = 0; 228 while (true){ 229 char ch = exp.charAt(i++); 230 if (isNum(ch + "")){ 231 break; 232 } 233 return 0.0; 234 } 235 236 237 return 0.00000000; 238 } 239 240 private String numSqrt(String s) throws Exception{ 241 if (s.indexOf('.') > 10 || s.indexOf('-') != -1){ //数值过大或含有负号 242 throw new Exception("输入错误,数值过大或尝试进行负数开方"); 243 } 244 Double num; //将字符串转换整型 245 try { 246 num = new Double(s); 247 }catch (Exception e){ 248 System.out.println(e.getMessage()); 249 throw new Exception("格式错误"); 250 } 251 return Math.sqrt(num) + ""; 252 } 253 254 255 private String numFactorial(String s) throws Exception{ //阶乘方法 256 if (s.length() > 10 || s.indexOf('.') != -1){ //过长或含有小数点 257 throw new Exception("计算数值过大"); 258 } 259 long num; //将字符串转换整型 260 try { 261 num = Integer.parseInt(s); 262 }catch (Exception e){ 263 System.out.println(e.getMessage()); 264 throw new Exception("格式错误"); 265 } 266 num = Integer.parseInt(s); 267 if(num == 1 || num == 0){ //计算阶乘 返回结果 268 return "1"; //但是,写完发现好像原来有这个方法。。。。。 269 }else{ 270 long temp; 271 try{ 272 temp = Integer.parseInt(numFactorial(num - 1 + "")); 273 }catch (Exception e){ 274 throw e; 275 } 276 return (num * temp) + ""; 277 } 278 } 279 280 private boolean isNum(String c){ 281 for (int j = 0;j < c.length() ;j++){ 282 for (int i = 0;i < 10;i++){ 283 if ((i + "").equals(c.charAt(j) + "")){ 284 break; 285 } 286 if(i == 9){ 287 return false; 288 } 289 } 290 } 291 292 return true; 293 } 294 295 } 296 297 /** 298 * 处理案件事件的类 299 */ 300 class buttonAction implements ActionListener{ //没写完,正在想方案 301 @Override 302 public void actionPerformed(ActionEvent e) { 303 System.out.println(e.getActionCommand()); 304 String cmd = e.getActionCommand(); 305 if(cmd.equals("删除")){ 306 inputString = numDelete(inputString); //本来直接获取对应按钮文本,但是代码太长了,就直接输字算了 307 freshResultShow2(); //另外,换了比较方法 替换 == 308 return; 309 }else if (isMathFunc(cmd)){ //几个特殊数学函数 310 addInput(cmd); //例如 sin cos啥的 311 return; 312 }else if (cmd.equals("=")){ //开始计算吧,,没写计算方法,比输入方法简单不到哪里去 313 cmdAnser(); //输入方法写的我好累。。 314 return; //一堆输入规则 315 }else if (cmd.equals("清零")){ //就是清零呗 316 inputString = "0"; 317 freshResultShow2(); 318 freshResult(""); 319 return; 320 }else if (cmd.equals("切换")){ //进行界面切换,将清除所有已输入 321 inputString = "0"; 322 freshResultShow2(); 323 freshResult(""); 324 lunchChange(); 325 return; 326 } 327 addInput(e.getActionCommand()); //其他的全交给输入了,一大波输入规则即将来袭 328 //我忘写注释了。。。。好难受 329 /*if(isFunc(e.getActionCommand())){ 330 //addNum(e.getActionCommand()); 331 }*/ 332 } 333 334 /** 335 * 判断输入字符串是否全数字 336 * @param c 337 * @return 338 */ 339 private boolean isNum(String c){ 340 for (int j = 0;j < c.length() ;j++){ 341 for (int i = 0;i < 10;i++){ 342 if ((i + "").equals(c.charAt(j) + "")){ //如果是 10 个数当中一个 开始下一个字符 343 break; 344 } 345 if(i == 9){ //都到9了,还没有匹配到数字 346 return false; 347 } 348 } 349 } 350 //全部循环完毕,竟然没有遇到不能匹配的,我给你出彩 351 return true; 352 } 353 354 355 /** 356 * 开始计算方法,可能抛出错误 357 */ 358 private void cmdAnser(){ 359 Calculator cal = new Calculator(inputString); 360 Double r = 0.000000; 361 try{ 362 r = cal.getAnser(); 363 }catch (Exception e1){ 364 inputString = e1.getMessage(); 365 freshResultShow2(); 366 return; 367 } 368 freshResult(inputString); 369 inputString = r.toString(); 370 freshResultShow2(); 371 } 372 373 /** 374 * 375 * @param s 376 * @return boolean 377 */ 378 private boolean isMathFunc(String s){ 379 if (calFlag == false){ 380 return false; 381 } 382 return ("sin(".equals(s) || 383 "cos(".equals(s) || 384 "tan(".equals(s) || 385 "ln(".equals(s) || 386 "lg(".equals(s) || 387 "^".equals(s) || 388 "√".equals(s) || 389 "n!".equals(s) || 390 "1/X".equals(s) 391 ); 392 } 393 394 /** 395 * 十分难受的输入方法,将输入以一定规则放到输入数组里面 396 * 规则写的很难受,也就不考虑什么效率和漂亮了 397 * 修修补补好些时间 398 * @param s 399 */ 400 private void addInput(String s) { 401 /** 402 *如果长度为0 或者只有一个0 403 * 那就是没有东西咯 404 * 直接弄上去 405 **/ 406 int len = inputString.length(); 407 if (len == 0 || (len == 1 && inputString.charAt(0) == '0')) { 408 if (".".equals(s)) { 409 inputString = " 0 ."; 410 } else if (s.equals("^") || "1/X".equals(s) || s.equals('%')) { //+-*/ 411 inputString = "0"; 412 } else if (isFunc(s)) { //+-*/ 413 inputString = "0 " + s; 414 } else if (s.equals("x") || s.equals("/") || s.equals("÷")) { 415 inputString = "0 " + s; 416 } else { 417 if (s.equals("n!")) { 418 inputString = "!"; 419 } else { 420 inputString = s; 421 } 422 } 423 freshResultShow2(); 424 return; 425 } 426 427 /* 428 * 获取已输入的最后一个字符来判断下一个输入是否合法 429 * */ 430 char c = inputString.charAt(inputString.length() - 1); 431 432 /*如果已经输入乘除 阶乘 百分号 433 * 那么 434 * 1. 后面直接输入 点 需要自动添加 0 435 * 2. 仍然输入乘除 则认为纠正刚才输入,替换上一个符号 436 * 3. 输入加减 可认为正负数,合法,添加 437 * 4. 其他输入就没什么特别,直接加上 (n!和分数需要稍微变形,留在else里面 这被当作普通输入,将不再提起) 438 * */ 439 if (c == '*' || c == '÷' || '!' == c || '%' == c) { 440 if (s.equals(".")) { 441 inputString = inputString + " " + "0 ."; 442 } else if (s.equals("+") || s.equals("-")) { 443 inputString = inputString + " " + s; 444 } else if (s.equals("*") || s.equals("÷")) { 445 inputString = numDelete(inputString); 446 inputString = inputString + " " + s; 447 } else if (s.equals("^") || s.equals("1/X") || s.equals(")")) { 448 ; 449 } else { 450 if (s.equals("n!")) { 451 inputString = inputString + " " + "!"; 452 } else { 453 inputString = inputString + " " + s; 454 } 455 } 456 freshResultShow2(); 457 return; 458 /* 459 * 输入为 pi 和 e 那么后面 460 * 1. 小数点自动加0 461 * 2. 没了 462 * */ 463 } else if (c == 'π' || c == 'e') { 464 if (s.equals(".")) { 465 inputString = inputString + " " + "0 ."; 466 } else if (s.equals("^") || s.equals("1/X")) { 467 if (s.equals("^")) { 468 inputString = inputString + " " + s; 469 } else { 470 inputString = inputString + " " + "^(-1)"; 471 } 472 } else { 473 if (s.equals("n!")) { 474 inputString = inputString + " " + "!"; 475 } else { 476 inputString = inputString + " " + s; 477 } 478 } 479 freshResultShow2(); 480 /* "+" "-" 481 * 1. 输入 + - 替换 482 * 2. 输入 乘除 检测前面是不是已经有乘除,有就将 加减 一起替换 483 * 其实我觉得可以让他直接不输入,还能简单点 484 * */ 485 } else if (c == '-' || c == '+') { 486 if (s.equals(".")) { 487 inputString = inputString + " " + "0 ."; 488 } else if (s.equals("*") || s.equals("÷")) { //将上一个+ - 替换 489 String str = inputString; // 490 if (str.length() < 3){ 491 inputString = "0 " + s; 492 freshResultShow2(); 493 return; 494 } 495 System.out.println("length:" + str.length()); 496 char strch = str.charAt(str.length() - 3); 497 if ( strch == '(' || strch == '!' || strch == '^' || strch == '%'){ //当 //但是这几个情况例外(某些后面能+-,但不能*/的符号 498 if (s.equals("*") || s.equals("/") || s.equals("÷") ){ 499 return; 500 } 501 } 502 char ch = '0'; 503 do { //将上一个几 + - 直接替换 504 inputString = numDelete(inputString); 505 ch = inputString.charAt(inputString.length() - 1); 506 } while (ch == '*' || ch == '÷'); 507 inputString = inputString + " " + s; 508 freshResultShow2(); 509 /* 510 * 后面的注释不想写了,好多呀,目前运行良好就算了 511 * 注释终结 512 * */ 513 } else if (s.equals("+") || s.equals("-")) { 514 inputString = numDelete(inputString); 515 inputString = inputString + " " + s; 516 freshResultShow2(); 517 } else if (s.equals("^") || s.equals("1/X")) { 518 ; 519 } else { 520 if (s.equals("n!")) { 521 inputString = inputString + " " + "!"; 522 } else { 523 inputString = inputString + " " + s; 524 } 525 } 526 freshResultShow2(); 527 return; 528 } else if (".".equals(c + "")) { 529 if (!isNum(s)) { 530 if ((".").equals(s)) { 531 System.out.println("前面已经有一个点了"); 532 } else if (inputString.length() > 2 && inputString.charAt(inputString.length() - 2) == '0') { 533 System.out.println("前面是0. 但是你输入不是数字,所以删了啊"); 534 inputString = numDelete(inputString); 535 freshResultShow2(); 536 inputString = inputString + "0" + " " + s; 537 } else if (s.equals("^") || s.equals("1/X")) { 538 inputString = numDelete(inputString); 539 if (s.equals("^")) { 540 inputString = inputString + " " + s; 541 } else { 542 inputString = inputString + " ^(-1)"; 543 } 544 } else { 545 System.out.println("你输入不是是数字,所以点删了"); 546 inputString = numDelete(inputString); 547 if (s.equals("n!")) { 548 inputString = inputString + " " + "!"; 549 } else { 550 inputString = inputString + " " + s; 551 } 552 } 553 } else { 554 inputString = inputString + " " + s; 555 } 556 freshResultShow2(); 557 return; 558 }else if ( c == '^' || c == '√' || c == '(' || c == '%' || c == '!'){ //这些符号后面不能 直接乘除 559 if (c == '('){ 560 if (s.equals("*") || s.equals("/") || s.equals("÷") || c == '^' || s.equals("1/X") ){ 561 return; 562 } 563 } 564 if (s.equals("*") || s.equals("/") || s.equals("÷")){ 565 return; 566 } 567 if (s.equals("n!")) { 568 inputString = inputString + " " + "!"; 569 } else { 570 inputString = inputString + " " + s; 571 } 572 freshResultShow2(); 573 return; 574 } else if (!isNum(c + "")) { //不是加减乘除 不是点 也不是数字 可能 :括号,特殊运算符 575 if (s.equals("^") || s.equals("1/X")) { 576 if (s.equals("^")) { 577 inputString = inputString + " " + s; 578 } else { 579 inputString = inputString + " ^(-1)"; 580 } 581 } else { 582 if (s.equals("n!")) { 583 inputString = inputString + " " + "!"; 584 } else { 585 inputString = inputString + " " + s; 586 } 587 } 588 freshResultShow2(); 589 return; 590 } else if (isNum("" + c)){ //是数字,总算啥都能输入了,但是考虑小数末尾的0 (应该放到运算符处检测)和数字开头的 0 591 /*此处考虑输入为0的情况 592 *如果前面没有小数点,且前面的数里面没有1 - 9,那么开头多个0 只输入一个 593 * */ 594 if (c == '0'){ 595 if (s.equals(".")){ 596 if (hasDot(inputString)){ 597 return; 598 }else { 599 inputString = inputString + " ."; 600 } 601 freshResultShow2(); 602 return; 603 } 604 if (!isNum(s) && hasDot(inputString)){ //输入不是数字 前面有点 末尾是0 605 while (c == '0'){ 606 inputString = numDelete(inputString); 607 len = inputString.length() - 1; 608 if (len >= 0){ 609 c = inputString.charAt(len); 610 }else { 611 inputString = "0"; 612 len = 0; 613 break; 614 } 615 } 616 if (inputString.charAt(len) == '.'){ 617 inputString = numDelete(inputString) + " " + s; 618 }else { 619 inputString = inputString + " " + s; 620 } 621 freshResultShow2(); 622 return; 623 } 624 if (s.equals("0") && !has129(inputString)){ 625 return; 626 } 627 } 628 629 if (s.equals(".") && hasDot(inputString)){ 630 ; 631 }else if (s.equals("^")){ 632 inputString = inputString + " " + s; 633 }else if (s.equals("1/X")){ 634 inputString = inputString + " ^(-1)" ; 635 }else if (s.equals("n!")){ 636 inputString = inputString + " " + "!"; 637 }else if (c == '0' && !has129(inputString)){ 638 if (s.equals(".")){ 639 inputString = inputString + " " + s; 640 }else { 641 inputString = numDelete(inputString); 642 inputString = inputString + " " + s; 643 } 644 }else { 645 inputString = inputString + " " + s; 646 } 647 freshResultShow2(); 648 return; 649 } 650 651 System.out.println("您似乎忽略了某些条件导致执行了该语句?位置 addinput.818156156"); 652 } 653 654 /** 655 * 判断前面是否有有效数字 1-9 & . 656 * 是否可以输入0 657 * @param s 658 * @return 659 */ 660 private boolean has129(String s){ 661 if (hasDot(s)){ 662 return true; 663 }else{ 664 int len = s.length() - 1; 665 char ch = s.charAt(len); 666 while (true){ 667 len -= 1; 668 if (isNum(ch + "") && ch != '0'){ 669 System.out.println("true" + len); 670 return true; 671 }else if ( (ch == '0' || ch == ' ') && len >= 0){ 672 System.out.println("has129 len 的值:" + len); 673 ch = s.charAt(len); 674 continue; 675 }else { 676 System.out.println("false" + len); 677 return false; 678 } 679 } 680 } 681 } 682 683 684 /** 685 * 判断字符串最后一个非数字字符后是否含有点 686 * @param s 待判断字符串 687 * @return 是否可以插入点 688 */ 689 private boolean hasDot(String s){ 690 int len = s.length() - 1; 691 while (true){ 692 if (s.charAt(len) == '.'){ //找到点,true 693 return true; 694 }else if ( (isNum(s.charAt(len) + "") || s.charAt(len) == ' ' ) && len - 1 > 0) { 695 len--; 696 continue;//是数字或空格,继续 697 }else { //不是数字,不是点,则false 698 return false; 699 } 700 } 701 } 702 703 /** 704 * 删除函数,每一次输入以空格分隔 705 * 所以实际功能是删除末尾到最后一个空格之间的内容 706 * 这个地方我没有什么好办法 简单replace方法 707 * 708 * @param s要删除最后一次输入的字符串 709 * @return 删除后的字符串 710 */ 711 //@org.jetbrains.annotations.NotNull 712 private String numDelete(String s){ 713 int len = s.length(); 714 if (len == 0 || len == 2 || len == 1){ //长度为 0 1 2 删完就都没有了 715 return "0"; 716 } 717 char c = s.charAt(--len); //获取最后一个字符 718 String str = c + ""; //读取删除字符串 719 while (c != ' ' && len-- > 0){ //重复直到遇到空格 或者 到头 720 c = s.charAt(len); 721 str = c + str; 722 System.out.println("将删除:" + str + " i:" + len); 723 } 724 s = s + "aja"; 725 return s.replace(str + "aja",""); 726 //myJavaSwing.this.freshResultShow2(); 727 } 728 729 /** 730 * 判断是否数学方法,不过这个方法好像没有用 731 * 先不删他 732 * @param s 733 * @return 734 */ 735 private boolean isFunc(String s){ 736 return ("+".equals(s) || 737 "-".equals(s) || 738 "*".equals(s) || 739 "÷".equals(s) || 740 "%".equals(s) || 741 "/".equals(s)); 742 } 743 } 744 745 /** 746 * 本来写出来设置监听的,结果在lunch里面顺便就吧这事做了 747 */ 748 public void setActionListener(){ 749 750 } 751 public static void main(String[] args) { 752 System.out.println("hello world"); 753 myJavaSwing cal = new myJavaSwing(true); 754 cal.lunch(); 755 //设置 756 757 } 758 759 // todo list 760 // 输入数字前面几个 0 删除多余, 761 //小数后面多余 0 删除多余 762 763 }