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