001package hw4; 002 003import java.awt.*; 004import java.awt.event.*; 005 006import javax.swing.*; 007import javax.swing.border.BevelBorder; 008import javax.swing.border.Border; 009 010 011/** 012 * <B>CalculatorFrame</b> is part of the graphical calculator that utilizes all 013 * of the other classes in package hw4. CalculatorFrame contains the main() 014 * function which starts the calculator. 015 */ 016 017public final class CalculatorFrame extends JFrame { 018 JPanel jPanel1 = new JPanel(); 019 020 JPanel jPanel2 = new JPanel(); 021 022 JPanel jPanel3 = new JPanel(); 023 024 JPanel jPanel4 = new JPanel(); 025 026 JPanel jPanel5 = new JPanel(); 027 028 JPanel jPanel6 = new JPanel(); 029 030 JPanel jPanel8 = new JPanel(); 031 032 Border border1; 033 034 JLabel jLabel5 = new JLabel(); 035 036 JLabel jLabel6 = new JLabel(); 037 038 JTextField jTextField1 = new JTextField(); 039 040 JTextField jTextField2 = new JTextField(); 041 042 JButton jButton_exp = new JButton(); 043 044 JButton jButton_div = new JButton(); 045 046 JButton jButton_mul = new JButton(); 047 048 JButton jButton_7 = new JButton(); 049 050 JButton jButton_8 = new JButton(); 051 052 JButton jButton_9 = new JButton(); 053 054 JButton jButton_4 = new JButton(); 055 056 JButton jButton_5 = new JButton(); 057 058 JButton jButton_6 = new JButton(); 059 060 JButton jButton_1 = new JButton(); 061 062 JButton jButton_2 = new JButton(); 063 064 JButton jButton_3 = new JButton(); 065 066 JButton jButton_0 = new JButton(); 067 068 JButton jButton_x = new JButton(); 069 070 JButton jButton_Enter = new JButton(); 071 072 JButton jButton_plus = new JButton(); 073 074 JButton jButton_minus = new JButton(); 075 076 JButton jButton_swap = new JButton(); 077 078 JButton jButton_pop = new JButton(); 079 080 JButton jButton_dup = new JButton(); 081 082 JButton jButton_int = new JButton(); 083 084 JButton jButton_dif = new JButton(); 085 086 JTextArea jTextArea_Current = new JTextArea(); 087 088 JTextArea jTextArea_Stack_3 = new JTextArea(); 089 090 JTextArea jTextArea_Stack_2 = new JTextArea(); 091 092 JTextArea jTextArea_Stack_1 = new JTextArea(); 093 094 JTextArea jTextArea_Stack_0 = new JTextArea(); 095 096 BorderLayout borderLayout1 = new BorderLayout(); 097 098 PolyGraph pg; 099 100 RatPolyStack stack; 101 102 Border border2; 103 104 Border border3; 105 106 Border border4; 107 108 Border border5; 109 110 JPanel jPanel7 = new JPanel(); 111 112 JButton jButton_stack_mul = new JButton(); 113 114 JButton jButton_stack_div = new JButton(); 115 116 JButton jButton_stack_add = new JButton(); 117 118 JButton jButton_stack_sub = new JButton(); 119 120 JButton jButton_Clear = new JButton(); 121 122 // Serializable classes are supposed to have this 123 private static final long serialVersionUID = 42L; 124 125 public CalculatorFrame() { 126 try { 127 // Student-written code that may throw an exception 128 stack = new RatPolyStack(); 129 130 jbInit(); 131 // exit the application when this window is closed 132 addWindowListener(new WindowAdapter() { 133 @Override 134 public void windowClosing(WindowEvent e) { 135 setVisible(false); 136 dispose(); 137 System.exit(0); 138 } 139 }); 140 } catch (Exception e) { 141 e.printStackTrace(); 142 } 143 } 144 145 /*@AssertNonNullAfter({"pg", "border1", "border2", "border3", "border4", "border5"})*/ 146 private void jbInit() throws Exception { 147 border1 = BorderFactory 148 .createBevelBorder(BevelBorder.LOWERED, Color.white, 149 Color.white, Color.white, new Color(124, 124, 124)); 150 border2 = BorderFactory.createBevelBorder(BevelBorder.LOWERED, 151 Color.red, Color.white, new Color(178, 178, 178), new Color( 152 124, 124, 124)); 153 border3 = BorderFactory.createBevelBorder(BevelBorder.LOWERED, 154 Color.blue, Color.white, new Color(178, 178, 178), new Color( 155 124, 124, 124)); 156 border4 = BorderFactory.createBevelBorder(BevelBorder.LOWERED, 157 Color.green, Color.white, new Color(178, 178, 178), new Color( 158 124, 124, 124)); 159 border5 = BorderFactory.createBevelBorder(BevelBorder.LOWERED, 160 Color.orange, Color.white, new Color(178, 178, 178), new Color( 161 124, 124, 124)); 162 jPanel1.setLayout(null); 163 jPanel1.setBackground(Color.gray); 164 jPanel1.setBorder(BorderFactory.createRaisedBevelBorder()); 165 jPanel2.setBorder(BorderFactory.createRaisedBevelBorder()); 166 jPanel2.setBounds(new Rectangle(21, 21, 330, 371)); 167 jPanel2.setLayout(borderLayout1); 168 jPanel3.setBorder(BorderFactory.createRaisedBevelBorder()); 169 jPanel3.setBounds(new Rectangle(366, 23, 259, 219)); 170 jPanel3.setLayout(null); 171 jPanel4.setBorder(BorderFactory.createRaisedBevelBorder()); 172 jPanel4.setBounds(new Rectangle(365, 258, 258, 132)); 173 jPanel4.setLayout(null); 174 jPanel5.setBorder(BorderFactory.createRaisedBevelBorder()); 175 jPanel5.setBounds(new Rectangle(21, 410, 167, 90)); 176 jPanel5.setLayout(null); 177 jPanel6.setBorder(BorderFactory.createRaisedBevelBorder()); 178 jPanel6.setBounds(new Rectangle(197, 410, 196, 275)); 179 jPanel6.setLayout(null); 180 jPanel8.setBorder(BorderFactory.createRaisedBevelBorder()); 181 jPanel8.setBounds(new Rectangle(21, 510, 167, 90)); 182 jPanel8.setLayout(null); 183 jLabel5.setText("X max"); 184 jLabel5.setBounds(new Rectangle(8, 47, 34, 25)); 185 jLabel6.setBounds(new Rectangle(10, 10, 34, 24)); 186 jLabel6.setText("X min"); 187 jTextField1.setText("-1.0"); 188 jTextField1.setBounds(new Rectangle(50, 15, 104, 22)); 189 jTextField1.addActionListener(new java.awt.event.ActionListener() { 190 @Override 191 public void actionPerformed(ActionEvent e) { 192 jTextField1_actionPerformed(e); 193 } 194 }); 195 jTextField2.setBounds(new Rectangle(49, 51, 104, 22)); 196 jTextField2.addActionListener(new java.awt.event.ActionListener() { 197 @Override 198 public void actionPerformed(ActionEvent e) { 199 jTextField2_actionPerformed(e); 200 } 201 }); 202 jTextField2.setText("1.0"); 203 jButton_exp.setFont(new java.awt.Font("Dialog", 0, 18)); 204 jButton_exp.setMargin(new Insets(2, 2, 2, 2)); 205 jButton_exp.setText("^"); 206 jButton_exp.setBounds(new Rectangle(9, 10, 41, 44)); 207 jButton_exp.addActionListener(new java.awt.event.ActionListener() { 208 @Override 209 public void actionPerformed(ActionEvent e) { 210 jButton_exp_actionPerformed(e); 211 } 212 }); 213 214 jButton_int.setBounds(new Rectangle(10, 7, 146, 35)); 215 jButton_int.setText("Integrate"); 216 jButton_int.setFont(new java.awt.Font("Dialog", 0, 18)); 217 jButton_int.setMargin(new Insets(2, 2, 2, 2)); 218 jButton_int.addActionListener(new java.awt.event.ActionListener() { 219 @Override 220 public void actionPerformed(ActionEvent e) { 221 jButton_int_actionPerformed(e); 222 } 223 }); 224 225 jButton_dif.setBounds(new Rectangle(10, 47, 146, 36)); 226 jButton_dif.setText("Differentiate"); 227 jButton_dif.setFont(new java.awt.Font("Dialog", 0, 18)); 228 jButton_dif.setMargin(new Insets(2, 2, 2, 2)); 229 jButton_dif.addActionListener(new java.awt.event.ActionListener() { 230 @Override 231 public void actionPerformed(ActionEvent e) { 232 jButton_dif_actionPerformed(e); 233 } 234 }); 235 236 jButton_div.setBounds(new Rectangle(103, 10, 41, 44)); 237 jButton_div.addActionListener(new java.awt.event.ActionListener() { 238 @Override 239 public void actionPerformed(ActionEvent e) { 240 jButton_div_actionPerformed(e); 241 } 242 }); 243 jButton_div.setText("/"); 244 jButton_div.setFont(new java.awt.Font("Dialog", 0, 18)); 245 jButton_div.setMargin(new Insets(2, 2, 2, 2)); 246 jButton_mul.setFont(new java.awt.Font("Dialog", 0, 18)); 247 jButton_mul.setMargin(new Insets(2, 2, 2, 2)); 248 jButton_mul.setText("*"); 249 jButton_mul.setBounds(new Rectangle(55, 10, 41, 44)); 250 jButton_mul.addActionListener(new java.awt.event.ActionListener() { 251 @Override 252 public void actionPerformed(ActionEvent e) { 253 jButton_mul_actionPerformed(e); 254 } 255 }); 256 jButton_7.setBounds(new Rectangle(9, 60, 41, 44)); 257 jButton_7.addActionListener(new java.awt.event.ActionListener() { 258 @Override 259 public void actionPerformed(ActionEvent e) { 260 jButton_7_actionPerformed(e); 261 } 262 }); 263 jButton_7.setFont(new java.awt.Font("Dialog", 1, 18)); 264 jButton_7.setHorizontalTextPosition(SwingConstants.CENTER); 265 jButton_7.setMargin(new Insets(2, 2, 2, 2)); 266 jButton_7.setText("7"); 267 jButton_8.setText("8"); 268 jButton_8.setHorizontalTextPosition(SwingConstants.CENTER); 269 jButton_8.setMargin(new Insets(2, 2, 2, 2)); 270 jButton_8.setFont(new java.awt.Font("Dialog", 1, 18)); 271 jButton_8.setBounds(new Rectangle(55, 60, 41, 44)); 272 jButton_8.addActionListener(new java.awt.event.ActionListener() { 273 @Override 274 public void actionPerformed(ActionEvent e) { 275 jButton_8_actionPerformed(e); 276 } 277 }); 278 jButton_9.setBounds(new Rectangle(103, 60, 41, 44)); 279 jButton_9.addActionListener(new java.awt.event.ActionListener() { 280 @Override 281 public void actionPerformed(ActionEvent e) { 282 jButton_9_actionPerformed(e); 283 } 284 }); 285 jButton_9.setFont(new java.awt.Font("Dialog", 1, 18)); 286 jButton_9.setHorizontalTextPosition(SwingConstants.CENTER); 287 jButton_9.setMargin(new Insets(2, 2, 2, 2)); 288 jButton_9.setText("9"); 289 jButton_4.setText("4"); 290 jButton_4.setHorizontalTextPosition(SwingConstants.CENTER); 291 jButton_4.setMargin(new Insets(2, 2, 2, 2)); 292 jButton_4.setFont(new java.awt.Font("Dialog", 1, 18)); 293 jButton_4.setBounds(new Rectangle(9, 111, 41, 44)); 294 jButton_4.addActionListener(new java.awt.event.ActionListener() { 295 @Override 296 public void actionPerformed(ActionEvent e) { 297 jButton_4_actionPerformed(e); 298 } 299 }); 300 jButton_5.setBounds(new Rectangle(55, 111, 41, 44)); 301 jButton_5.addActionListener(new java.awt.event.ActionListener() { 302 @Override 303 public void actionPerformed(ActionEvent e) { 304 jButton_5_actionPerformed(e); 305 } 306 }); 307 jButton_5.setFont(new java.awt.Font("Dialog", 1, 18)); 308 jButton_5.setHorizontalTextPosition(SwingConstants.CENTER); 309 jButton_5.setMargin(new Insets(2, 2, 2, 2)); 310 jButton_5.setText("5"); 311 jButton_6.setText("6"); 312 jButton_6.setHorizontalTextPosition(SwingConstants.CENTER); 313 jButton_6.setMargin(new Insets(2, 2, 2, 2)); 314 jButton_6.setFont(new java.awt.Font("Dialog", 1, 18)); 315 jButton_6.setBounds(new Rectangle(103, 111, 41, 44)); 316 jButton_6.addActionListener(new java.awt.event.ActionListener() { 317 @Override 318 public void actionPerformed(ActionEvent e) { 319 jButton_6_actionPerformed(e); 320 } 321 }); 322 jButton_1.setBounds(new Rectangle(9, 163, 41, 44)); 323 jButton_1.addActionListener(new java.awt.event.ActionListener() { 324 @Override 325 public void actionPerformed(ActionEvent e) { 326 jButton_1_actionPerformed(e); 327 } 328 }); 329 jButton_1.setFont(new java.awt.Font("Dialog", 1, 18)); 330 jButton_1.setHorizontalTextPosition(SwingConstants.CENTER); 331 jButton_1.setMargin(new Insets(2, 2, 2, 2)); 332 jButton_1.setText("1"); 333 jButton_2.setText("2"); 334 jButton_2.setHorizontalTextPosition(SwingConstants.CENTER); 335 jButton_2.setMargin(new Insets(2, 2, 2, 2)); 336 jButton_2.setFont(new java.awt.Font("Dialog", 1, 18)); 337 jButton_2.setBounds(new Rectangle(55, 163, 41, 44)); 338 jButton_2.addActionListener(new java.awt.event.ActionListener() { 339 @Override 340 public void actionPerformed(ActionEvent e) { 341 jButton_2_actionPerformed(e); 342 } 343 }); 344 jButton_3.setBounds(new Rectangle(103, 163, 41, 44)); 345 jButton_3.addActionListener(new java.awt.event.ActionListener() { 346 @Override 347 public void actionPerformed(ActionEvent e) { 348 jButton_3_actionPerformed(e); 349 } 350 }); 351 jButton_3.setFont(new java.awt.Font("Dialog", 1, 18)); 352 jButton_3.setHorizontalTextPosition(SwingConstants.CENTER); 353 jButton_3.setMargin(new Insets(2, 2, 2, 2)); 354 jButton_3.setText("3"); 355 jButton_0.setText("0"); 356 jButton_0.setHorizontalTextPosition(SwingConstants.CENTER); 357 jButton_0.setMargin(new Insets(2, 2, 2, 2)); 358 jButton_0.setFont(new java.awt.Font("Dialog", 1, 18)); 359 jButton_0.setBounds(new Rectangle(9, 218, 89, 44)); 360 jButton_0.addActionListener(new java.awt.event.ActionListener() { 361 @Override 362 public void actionPerformed(ActionEvent e) { 363 jButton_0_actionPerformed(e); 364 } 365 }); 366 jButton_x.setText("x"); 367 jButton_x.setHorizontalTextPosition(SwingConstants.CENTER); 368 jButton_x.setMargin(new Insets(2, 2, 2, 2)); 369 jButton_x.setFont(new java.awt.Font("Dialog", 1, 18)); 370 jButton_x.setBounds(new Rectangle(103, 218, 41, 44)); 371 jButton_x.addActionListener(new java.awt.event.ActionListener() { 372 @Override 373 public void actionPerformed(ActionEvent e) { 374 jButton_x_actionPerformed(e); 375 } 376 }); 377 jButton_Enter.setBounds(new Rectangle(8, 171, 77, 44)); 378 jButton_Enter.addActionListener(new java.awt.event.ActionListener() { 379 @Override 380 public void actionPerformed(ActionEvent e) { 381 jButton_Enter_actionPerformed(e); 382 } 383 }); 384 jButton_Enter.setFont(new java.awt.Font("Dialog", 1, 18)); 385 jButton_Enter.setHorizontalTextPosition(SwingConstants.CENTER); 386 jButton_Enter.setMargin(new Insets(2, 2, 2, 2)); 387 jButton_Enter.setText("Enter"); 388 jButton_plus.setBounds(new Rectangle(149, 10, 41, 44)); 389 jButton_plus.addActionListener(new java.awt.event.ActionListener() { 390 @Override 391 public void actionPerformed(ActionEvent e) { 392 jButton_plus_actionPerformed(e); 393 } 394 }); 395 jButton_plus.setFont(new java.awt.Font("Dialog", 1, 18)); 396 jButton_plus.setHorizontalTextPosition(SwingConstants.CENTER); 397 jButton_plus.setMargin(new Insets(2, 2, 2, 2)); 398 jButton_plus.setText("+"); 399 jButton_minus.setText("-"); 400 jButton_minus.setHorizontalTextPosition(SwingConstants.CENTER); 401 jButton_minus.setMargin(new Insets(2, 2, 2, 2)); 402 jButton_minus.setFont(new java.awt.Font("Dialog", 1, 18)); 403 jButton_minus.setBounds(new Rectangle(149, 61, 41, 44)); 404 jButton_minus.addActionListener(new java.awt.event.ActionListener() { 405 @Override 406 public void actionPerformed(ActionEvent e) { 407 jButton_minus_actionPerformed(e); 408 } 409 }); 410 jButton_swap.setText("Swap"); 411 jButton_swap.setHorizontalTextPosition(SwingConstants.CENTER); 412 jButton_swap.setMargin(new Insets(2, 2, 2, 2)); 413 jButton_swap.setFont(new java.awt.Font("Dialog", 1, 18)); 414 jButton_swap.setBounds(new Rectangle(8, 8, 75, 44)); 415 jButton_swap.addActionListener(new java.awt.event.ActionListener() { 416 @Override 417 public void actionPerformed(ActionEvent e) { 418 jButton_swap_actionPerformed(e); 419 } 420 }); 421 jButton_pop.setBounds(new Rectangle(8, 63, 75, 44)); 422 jButton_pop.addActionListener(new java.awt.event.ActionListener() { 423 @Override 424 public void actionPerformed(ActionEvent e) { 425 jButton_pop_actionPerformed(e); 426 } 427 }); 428 jButton_pop.setFont(new java.awt.Font("Dialog", 1, 18)); 429 jButton_pop.setHorizontalTextPosition(SwingConstants.CENTER); 430 jButton_pop.setMargin(new Insets(2, 2, 2, 2)); 431 jButton_pop.setText("Pop"); 432 jButton_dup.setText("Dup"); 433 jButton_dup.setHorizontalTextPosition(SwingConstants.CENTER); 434 jButton_dup.setMargin(new Insets(2, 2, 2, 2)); 435 jButton_dup.setFont(new java.awt.Font("Dialog", 1, 18)); 436 jButton_dup.setBounds(new Rectangle(8, 118, 76, 44)); 437 jButton_dup.addActionListener(new java.awt.event.ActionListener() { 438 @Override 439 public void actionPerformed(ActionEvent e) { 440 jButton_dup_actionPerformed(e); 441 } 442 }); 443 jTextArea_Current.setLineWrap(true); 444 jTextArea_Current.setBorder(BorderFactory.createLoweredBevelBorder()); 445 jTextArea_Current.setBounds(new Rectangle(8, 11, 239, 111)); 446 jTextArea_Stack_3.setLineWrap(true); 447 jTextArea_Stack_3.setBorder(border5); 448 jTextArea_Stack_3.setEditable(false); 449 jTextArea_Stack_3.setBounds(new Rectangle(8, 10, 241, 40)); 450 jTextArea_Stack_2.setBounds(new Rectangle(8, 57, 241, 40)); 451 jTextArea_Stack_2.setLineWrap(true); 452 jTextArea_Stack_2.setBorder(border4); 453 jTextArea_Stack_2.setEditable(false); 454 jTextArea_Stack_1.setLineWrap(true); 455 jTextArea_Stack_1.setBorder(border3); 456 jTextArea_Stack_1.setEditable(false); 457 jTextArea_Stack_1.setBounds(new Rectangle(8, 105, 241, 40)); 458 jTextArea_Stack_0.setLineWrap(true); 459 jTextArea_Stack_0.setBorder(border2); 460 jTextArea_Stack_0.setEditable(false); 461 jTextArea_Stack_0.setBounds(new Rectangle(8, 154, 241, 40)); 462 jPanel7.setBorder(BorderFactory.createRaisedBevelBorder()); 463 jPanel7.setBounds(new Rectangle(403, 411, 199, 283)); 464 jPanel7.setLayout(null); 465 jButton_stack_mul 466 .addActionListener(new java.awt.event.ActionListener() { 467 @Override 468 public void actionPerformed(ActionEvent e) { 469 jButton_stack_mul_actionPerformed(e); 470 } 471 }); 472 jButton_stack_mul.setBounds(new Rectangle(105, 118, 75, 44)); 473 jButton_stack_mul.setFont(new java.awt.Font("Dialog", 1, 18)); 474 jButton_stack_mul.setMargin(new Insets(2, 2, 2, 2)); 475 jButton_stack_mul.setHorizontalTextPosition(SwingConstants.CENTER); 476 jButton_stack_mul.setText("Mul"); 477 jButton_stack_div.setText("Div"); 478 jButton_stack_div.setHorizontalTextPosition(SwingConstants.CENTER); 479 jButton_stack_div.setMargin(new Insets(2, 2, 2, 2)); 480 jButton_stack_div.setFont(new java.awt.Font("Dialog", 1, 18)); 481 jButton_stack_div.setBounds(new Rectangle(105, 171, 75, 44)); 482 jButton_stack_div 483 .addActionListener(new java.awt.event.ActionListener() { 484 @Override 485 public void actionPerformed(ActionEvent e) { 486 jButton_stack_div_actionPerformed(e); 487 } 488 }); 489 jButton_stack_add.setText("Add"); 490 jButton_stack_add.setHorizontalTextPosition(SwingConstants.CENTER); 491 jButton_stack_add.setMargin(new Insets(2, 2, 2, 2)); 492 jButton_stack_add.setFont(new java.awt.Font("Dialog", 1, 18)); 493 jButton_stack_add.setBounds(new Rectangle(105, 8, 75, 44)); 494 jButton_stack_add 495 .addActionListener(new java.awt.event.ActionListener() { 496 @Override 497 public void actionPerformed(ActionEvent e) { 498 jButton_stack_add_actionPerformed(e); 499 } 500 }); 501 jButton_stack_sub.setText("Sub"); 502 jButton_stack_sub.setHorizontalTextPosition(SwingConstants.CENTER); 503 jButton_stack_sub.setMargin(new Insets(2, 2, 2, 2)); 504 jButton_stack_sub.setFont(new java.awt.Font("Dialog", 1, 18)); 505 jButton_stack_sub.setBounds(new Rectangle(105, 63, 75, 44)); 506 jButton_stack_sub 507 .addActionListener(new java.awt.event.ActionListener() { 508 @Override 509 public void actionPerformed(ActionEvent e) { 510 jButton_stack_sub_actionPerformed(e); 511 } 512 }); 513 jButton_Clear.setText("Clear"); 514 jButton_Clear.setMargin(new Insets(2, 2, 2, 2)); 515 jButton_Clear.setHorizontalTextPosition(SwingConstants.CENTER); 516 jButton_Clear.setFont(new java.awt.Font("Dialog", 1, 18)); 517 jButton_Clear.addActionListener(new java.awt.event.ActionListener() { 518 @Override 519 public void actionPerformed(ActionEvent e) { 520 jButton_Clear_actionPerformed(e); 521 } 522 }); 523 jButton_Clear.setBounds(new Rectangle(105, 225, 77, 44)); 524 this.getContentPane().add(jPanel1, BorderLayout.CENTER); 525 jPanel1.add(jPanel2, null); 526 jPanel1.add(jPanel3, null); 527 jPanel3.add(jTextArea_Stack_3, null); 528 jPanel3.add(jTextArea_Stack_2, null); 529 jPanel3.add(jTextArea_Stack_0, null); 530 jPanel3.add(jTextArea_Stack_1, null); 531 jPanel1.add(jPanel4, null); 532 jPanel4.add(jTextArea_Current, null); 533 jPanel1.add(jPanel5, null); 534 jPanel1.add(jPanel8, null); 535 jPanel5.add(jLabel6, null); 536 jPanel5.add(jLabel5, null); 537 jPanel5.add(jTextField1, null); 538 jPanel5.add(jTextField2, null); 539 jPanel8.add(jButton_int, null); 540 jPanel8.add(jButton_dif, null); 541 jPanel1.add(jPanel6, null); 542 jPanel6.add(jButton_exp, null); 543 jPanel6.add(jButton_8, null); 544 jPanel6.add(jButton_9, null); 545 jPanel6.add(jButton_4, null); 546 jPanel6.add(jButton_5, null); 547 jPanel6.add(jButton_6, null); 548 jPanel6.add(jButton_3, null); 549 jPanel6.add(jButton_0, null); 550 jPanel6.add(jButton_x, null); 551 jPanel6.add(jButton_div, null); 552 jPanel6.add(jButton_plus, null); 553 jPanel6.add(jButton_mul, null); 554 jPanel6.add(jButton_7, null); 555 jPanel6.add(jButton_2, null); 556 jPanel6.add(jButton_1, null); 557 jPanel6.add(jButton_minus, null); 558 jPanel1.add(jPanel7, null); 559 jPanel7.add(jButton_pop, null); 560 jPanel7.add(jButton_dup, null); 561 jPanel7.add(jButton_Enter, null); 562 jPanel7.add(jButton_swap, null); 563 jPanel7.add(jButton_stack_div, null); 564 jPanel7.add(jButton_stack_mul, null); 565 jPanel7.add(jButton_stack_add, null); 566 jPanel7.add(jButton_stack_sub, null); 567 jPanel7.add(jButton_Clear, null); 568 569 pg = new PolyGraph(this); 570 // pg.setBackground(Color.white); 571 jPanel2.add(pg, "Center"); 572 } 573 574 /** Main method */ 575 public static void main(String[] args) { 576 try { 577 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 578 } catch (Exception e) { 579 e.printStackTrace(); 580 } 581 582 CalculatorFrame frame = new CalculatorFrame(); 583 584 // Validate frames that have preset sizes 585 frame.validate(); 586 587 // Center the window 588 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 589 590 frame.setSize(new Dimension(670, 730)); 591 frame.setTitle("Polynomial Calculator"); 592 593 Dimension frameSize = frame.getSize(); 594 595 if (frameSize.height > screenSize.height) { 596 frameSize.height = screenSize.height; 597 } 598 if (frameSize.width > screenSize.width) { 599 frameSize.width = screenSize.width; 600 } 601 frame.setLocation((screenSize.width - frameSize.width) / 2, 602 (screenSize.height - frameSize.height) / 2); 603 frame.setVisible(true); 604 } 605 606 boolean startNewEq = false; 607 608 void appendToCurrentText(String textToAdd) { 609 if (startNewEq) { 610 jTextArea_Current.setText(""); 611 startNewEq = false; 612 } 613 String currentText = jTextArea_Current.getText(); 614 jTextArea_Current.setText(currentText + textToAdd); 615 } 616 617 void jButton_1_actionPerformed(ActionEvent e) { 618 appendToCurrentText("1"); 619 } 620 621 void jButton_2_actionPerformed(ActionEvent e) { 622 appendToCurrentText("2"); 623 } 624 625 void jButton_3_actionPerformed(ActionEvent e) { 626 appendToCurrentText("3"); 627 } 628 629 void jButton_4_actionPerformed(ActionEvent e) { 630 appendToCurrentText("4"); 631 } 632 633 void jButton_5_actionPerformed(ActionEvent e) { 634 appendToCurrentText("5"); 635 } 636 637 void jButton_6_actionPerformed(ActionEvent e) { 638 appendToCurrentText("6"); 639 } 640 641 void jButton_7_actionPerformed(ActionEvent e) { 642 appendToCurrentText("7"); 643 } 644 645 void jButton_8_actionPerformed(ActionEvent e) { 646 appendToCurrentText("8"); 647 } 648 649 void jButton_9_actionPerformed(ActionEvent e) { 650 appendToCurrentText("9"); 651 } 652 653 void jButton_exp_actionPerformed(ActionEvent e) { 654 if (startNewEq == true) { 655 startNewEq = false; 656 } 657 appendToCurrentText("^"); 658 } 659 660 void jButton_mul_actionPerformed(ActionEvent e) { 661 if (startNewEq == true) { 662 startNewEq = false; 663 } 664 appendToCurrentText("*"); 665 } 666 667 void jButton_div_actionPerformed(ActionEvent e) { 668 if (startNewEq == true) { 669 startNewEq = false; 670 } 671 appendToCurrentText("/"); 672 } 673 674 void jButton_plus_actionPerformed(ActionEvent e) { 675 if (startNewEq == true) { 676 startNewEq = false; 677 } 678 appendToCurrentText("+"); 679 } 680 681 void jButton_minus_actionPerformed(ActionEvent e) { 682 if (startNewEq == true) { 683 startNewEq = false; 684 } 685 appendToCurrentText("-"); 686 } 687 688 void jButton_0_actionPerformed(ActionEvent e) { 689 appendToCurrentText("0"); 690 } 691 692 void jButton_x_actionPerformed(ActionEvent e) { 693 appendToCurrentText("x"); 694 } 695 696 void jButton_swap_actionPerformed(ActionEvent e) { 697 try { 698 if (stack.size() > 1) { 699 stack.swap(); 700 } 701 // Update displays (so that they display new stack contents). 702 updateStackDisplay(); 703 updateGraph(); 704 } catch (Exception e1) { 705 e1.printStackTrace(); 706 return; 707 } 708 } 709 710 void jButton_pop_actionPerformed(ActionEvent e) { 711 try { 712 if (stack.size() > 0) { 713 RatPoly popped = stack.pop(); 714 jTextArea_Current.setText(popped.toString()); 715 startNewEq = true; 716 } 717 // Update displays (so that they display new stack contents). 718 updateStackDisplay(); 719 updateGraph(); 720 } catch (Exception e1) { 721 e1.printStackTrace(); 722 return; 723 } 724 } 725 726 void jButton_dup_actionPerformed(ActionEvent e) { 727 try { 728 if (stack.size() > 0) { 729 stack.dup(); 730 } 731 // Update displays (so that they display new stack contents). 732 updateStackDisplay(); 733 updateGraph(); 734 } catch (Exception e1) { 735 e1.printStackTrace(); 736 return; 737 } 738 } 739 740 void jButton_Enter_actionPerformed(ActionEvent e) { 741 String currentText = jTextArea_Current.getText(); 742 RatPoly parsedRatPoly; 743 744 startNewEq = true; 745 jTextArea_Current.setText(""); 746 747 // Exception handler used here since some of this calls what will 748 // ultimately be student-written code. 749 try { 750 // Parse text to get new RatPoly and push it onto the stack. 751 parsedRatPoly = RatPoly.valueOf(currentText); 752 stack.push(parsedRatPoly); 753 754 // Update displays (so that they display new stack contents). 755 updateStackDisplay(); 756 updateGraph(); 757 } catch (Exception e1) { 758 // Provide more informative message here. 759 jTextArea_Current.setText(currentText); 760 e1.printStackTrace(); 761 return; 762 } 763 764 } 765 766 void updateStackDisplay() { 767 // First, clear all the text areas for the stack display. 768 jTextArea_Stack_0.setText(""); 769 jTextArea_Stack_1.setText(""); 770 jTextArea_Stack_2.setText(""); 771 jTextArea_Stack_3.setText(""); 772 773 RatPoly currentRatPoly; 774 String tempString; 775 776 // Now fill in new information base on what's in stack. 777 // Note that size of stack must be checked. 778 if (stack.size() > 0) { 779 currentRatPoly = stack.getNthFromTop(0); 780 tempString = currentRatPoly.toString(); 781 jTextArea_Stack_0.setText(tempString); 782 } 783 784 if (stack.size() > 1) { 785 currentRatPoly = stack.getNthFromTop(1); 786 tempString = currentRatPoly.toString(); 787 jTextArea_Stack_1.setText(tempString); 788 } 789 790 if (stack.size() > 2) { 791 currentRatPoly = stack.getNthFromTop(2); 792 tempString = currentRatPoly.toString(); 793 jTextArea_Stack_2.setText(tempString); 794 } 795 796 if (stack.size() > 3) { 797 currentRatPoly = stack.getNthFromTop(3); 798 tempString = currentRatPoly.toString(); 799 jTextArea_Stack_3.setText(tempString); 800 } 801 // Consider abstracting this better! This would require 802 // putting the text areas into an array. 803 804 } 805 806 void updateGraph() { 807 pg.repaint(); 808 } 809 810 void jTextField1_actionPerformed(ActionEvent e) { 811 updateGraph(); 812 } 813 814 void jTextField2_actionPerformed(ActionEvent e) { 815 updateGraph(); 816 } 817 818 void jButton_stack_mul_actionPerformed(ActionEvent e) { 819 try { 820 if (stack.size() > 1) { 821 stack.mul(); 822 } 823 // Update displays (so that they display new stack contents). 824 updateStackDisplay(); 825 updateGraph(); 826 } catch (Exception e1) { 827 e1.printStackTrace(); 828 return; 829 } 830 } 831 832 void jButton_stack_div_actionPerformed(ActionEvent e) { 833 try { 834 if (stack.size() > 1) { 835 stack.div(); 836 } 837 // Update displays (so that they display new stack contents). 838 updateStackDisplay(); 839 updateGraph(); 840 } catch (Exception e1) { 841 e1.printStackTrace(); 842 return; 843 } 844 } 845 846 void jButton_int_actionPerformed(ActionEvent e) { 847 try { 848 // System.out.println("Integrate Button Clicked"); 849 stack.integrate(); 850 updateStackDisplay(); 851 updateGraph(); 852 } catch (Exception e1) { 853 e1.printStackTrace(); 854 return; 855 } 856 } 857 858 void jButton_dif_actionPerformed(ActionEvent e) { 859 try { 860 // System.out.println("Differentiate Button Clicked"); 861 stack.differentiate(); 862 updateStackDisplay(); 863 updateGraph(); 864 } catch (Exception e1) { 865 e1.printStackTrace(); 866 return; 867 } 868 } 869 870 void jButton_stack_add_actionPerformed(ActionEvent e) { 871 try { 872 if (stack.size() > 1) { 873 stack.add(); 874 } 875 // Update displays (so that they display new stack contents). 876 updateStackDisplay(); 877 updateGraph(); 878 } catch (Exception e1) { 879 e1.printStackTrace(); 880 return; 881 } 882 } 883 884 void jButton_stack_sub_actionPerformed(ActionEvent e) { 885 try { 886 if (stack.size() > 1) { 887 stack.sub(); 888 } 889 // Update displays (so that they display new stack contents). 890 updateStackDisplay(); 891 updateGraph(); 892 } catch (Exception e1) { 893 e1.printStackTrace(); 894 return; 895 } 896 } 897 898 void jButton_Clear_actionPerformed(ActionEvent e) { 899 try { 900 if (stack.size() > 0) { 901 stack.clear(); 902 } 903 // Update displays (so that they display new stack contents). 904 updateStackDisplay(); 905 updateGraph(); 906 } catch (Exception e1) { 907 e1.printStackTrace(); 908 return; 909 } 910 } 911 912}