Ex No.
30
Date:
Graphical calculator
Aim:
To write a java program to simulate a calculator application using swing
s.
Source Code:
[Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new Calculator();
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
}
}
[Link]
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
class Calculator extends JFrame {
private final Font BIGGER_FONT = new Font("monspaced", [Link], 20);
private JTextField textfield;
private boolean number = true;
private String equalOp = "=";
private CalculatorOp op = new CalculatorOp();
public Calculator() {
textfield = new JTextField("0", 12);
[Link]([Link]);
[Link](BIGGER_FONT);
ActionListener numberListener = new NumberListener();
String buttonOrder = "1234567890 ";
JPanel buttonPanel = new JPanel();
[Link](new GridLayout(4, 4, 4, 4));
for (int i = 0; i < [Link](); i++) {
String key = [Link](i, i+1);
if ([Link](" ")) {
[Link](new JLabel(""));
} else {
JButton button = new JButton(key);
[Link](numberListener);
[Link](BIGGER_FONT);
[Link](button);
}
}
ActionListener operatorListener = new OperatorListener();
JPanel panel = new JPanel();
[Link](new GridLayout(4, 4, 4, 4));
String[] opOrder = {"+", "-", "*", "/","=","C"};
for (int i = 0; i < [Link]; i++) {
JButton button = new JButton(opOrder[i]);
[Link](operatorListener);
[Link](BIGGER_FONT);
[Link](button);
}
JPanel pan = new JPanel();
[Link](new BorderLayout(4, 4));
[Link](textfield, [Link] );
[Link](buttonPanel , [Link]);
[Link](panel , [Link] );
[Link](pan);
[Link]();
[Link]("Calculator");
[Link](false);
}
private void action() {
number = true;
[Link]("0");
equalOp = "=";
[Link]("0");
}
class OperatorListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (number) {
action();
[Link]("0");
} else {
number = true;
String displayText = [Link]();
if ([Link]("=")) {
[Link](displayText);
} else if ([Link]("+")) {
[Link](displayText);
} else if ([Link]("-")) {
[Link](displayText);
} else if ([Link]("*")) {
[Link](displayText);
} else if ([Link]("/")) {
[Link](displayText);
}
[Link]("" + [Link]());
equalOp = [Link]();
}
}
}
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String digit = [Link]();
if (number) {
[Link](digit);
number = false;
} else {
[Link]([Link]() + digit);
}
}
}
public class CalculatorOp {
private int total;
public CalculatorOp() {
total = 0;
}
public String getTotalString() {
return ""+total;
}
public void setTotal(String n) {
total = convertToNumber(n);
}
public void add(String n) {
total += convertToNumber(n);
}
public void subtract(String n) {
total -= convertToNumber(n);
}
public void multiply(String n) {
total *= convertToNumber(n);
}
public void divide(String n) {
total /= convertToNumber(n);
}
private int convertToNumber(String n) {
return [Link](n);
}
}
}
Output:
Javac [Link]
Javac [Link]
Java SwingCalculator
Result:
Thus a java program has been written to simulate a calculator using swin
gs.