-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJCalcGUI.java
More file actions
117 lines (92 loc) · 2.8 KB
/
JCalcGUI.java
File metadata and controls
117 lines (92 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package calculator;
import acm.gui.*;
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
public class JCalcGUI extends Program{
/* credit: the 'temperature converter' program uploaded on myCourses*/
final int BUTTON_SIZE = 100;
// creating the input and output text box
JTextField inputField;
JTextField outputField;
// for calculation purpose
Queue Qin = new Queue();
postFix pf = new postFix();
public void init() {
setLayout(new TableLayout(9, 4));
// input field
inputField = new JTextField("Key in your function here");
inputField.setActionCommand("=");
inputField.addActionListener(this);
outputField = new JTextField("See the result here");
outputField.setActionCommand("=");
outputField.addActionListener(this);
add(inputField,"gridwidth=400 height="+30);
add(outputField,"gridwidth=400 height="+30);
addButtons();
addActionListeners();
}
private void addButtons() {
String constraint = "width=" + BUTTON_SIZE;
// pas 1st row
add(new JButton("C"), constraint);
add(new JButton(""), constraint);
add(new JButton(""), constraint);
add(new JButton("/"), constraint);
// pad - 2nd row
add(new JButton("7"), constraint);
add(new JButton("8"), constraint);
add(new JButton("9"), constraint);
add(new JButton("*"), constraint);
// pad 3rd row
add(new JButton("4"), constraint);
add(new JButton("5"), constraint);
add(new JButton("6"), constraint);
add(new JButton("-"), constraint);
// pad - 4th row
add(new JButton("1"), constraint);
add(new JButton("2"), constraint);
add(new JButton("3"), constraint);
add(new JButton("+"), constraint);
// pad -5th row
add(new JButton("0"), constraint);
add(new JButton("."), constraint);
add(new JButton("^"), constraint);
add(new JButton("="), constraint);
// pad -6th row
add(new JButton("("), constraint);
add(new JButton(")"), constraint);
add(new JButton(""), constraint);
add(new JButton(""), constraint);
// pad -7th row
add(new JButton(""), constraint);
add(new JButton(""), constraint);
add(new JButton(""), constraint);
add(new JButton("Quit"), constraint);
}
public void actionPerformed(ActionEvent e) {
// try-catch is used to prevent the crash of the program
try {
String cmd = e.getActionCommand();
if(cmd.equals("=")) {
pf.parse(inputField.getText(), Qin);
double result = pf.doExpression(Qin);
outputField.setText(Double.toString(result));
}
else if (cmd.equals("C")) {
inputField.setText("");
outputField.setText("");
}
else if(cmd.equals("Quit")) {
System.exit(0);
}
else {
String txt = inputField.getText();
inputField.setText(txt+cmd);
}
}
// do nothing just o prevent the crash of the program
catch (NullPointerException e1) {
}
}
}