A
Free Calculator application written in JAVA
This Java sample program is a calculator
application.
This sample program uses Java Swing to display a
calculation application. This program can be studied
in detail to understand the basic Java constructs
and Java Swing.
|
/*
*
* A free Java sample program
* A calculator application written using Java
*
* free for use as long as this comment is included
* in the program as it is
*
* More Free Java programs available for download
* at http://www.java-samples.com
*
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
|
public class CalculatorApplication extends JFrame implements ActionListener {
JTextField resultField;
double operandOne;
double operandTwo;
int operator;
JButton addButton;
JButton subtractButton;
JButton multiplyButton;
JButton divideButton;
JButton percentileButton;
JButton equalsButton;
JButton dotButton;
JButton cancelButton;
JButton onebyButton;
JButton backButton;
JButton one1;
JButton two2;
JButton three3;
JButton four4;
JButton five5;
JButton six6;
JButton seven7;
JButton eight8;
JButton nine9;
JButton zero0;
Object source;
public static void main(String[] args) {
CalculatorApplication app = new CalculatorApplication();
app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
app.setSize(280, 240);
app.setVisible(true);
}
public CalculatorApplication() {
super();
JPanel operandPanel;
JPanel buttonPanel1;
JPanel buttonPanel2;
JPanel buttonPanel3;
JPanel buttonPanel4;
Container cp;
cp = getContentPane();
cp.setLayout(new GridLayout(5, 1));
operandPanel = new JPanel();
operandPanel.setLayout(new FlowLayout());
resultField = new JTextField("0", 23);
resultField.setHorizontalAlignment(SwingConstants.RIGHT);
operandPanel.add(resultField);
cp.add(operandPanel);
buttonPanel1 = new JPanel();
buttonPanel1.setLayout(new FlowLayout());
seven7 = new JButton(" 7 ");
seven7.addActionListener(this);
buttonPanel1.add(seven7);
eight8 = new JButton(" 8 ");
eight8.addActionListener(this);
buttonPanel1.add(eight8);
nine9 = new JButton(" 9 ");
nine9.addActionListener(this);
buttonPanel1.add(nine9);
divideButton = new JButton(" / ");
divideButton.addActionListener(this);
buttonPanel1.add(divideButton);
cancelButton = new JButton(" C ");
cancelButton.addActionListener(this);
buttonPanel1.add(cancelButton);
cp.add(buttonPanel1);
buttonPanel2 = new JPanel();
buttonPanel2.setLayout(new FlowLayout());
four4 = new JButton(" 4 ");
four4.addActionListener(this);
buttonPanel2.add(four4);
five5 = new JButton(" 5 ");
five5.addActionListener(this);
buttonPanel2.add(five5);
six6 = new JButton(" 6 ");
six6.addActionListener(this);
buttonPanel2.add(six6);
multiplyButton = new JButton(" * ");
multiplyButton.addActionListener(this);
buttonPanel2.add(multiplyButton);
backButton = new JButton(" B ");
backButton.addActionListener(this);
buttonPanel2.add(backButton);
cp.add(buttonPanel2);
buttonPanel3 = new JPanel();
buttonPanel3.setLayout(new FlowLayout());
one1 = new JButton(" 1 ");
one1.addActionListener(this);
buttonPanel3.add(one1);
two2 = new JButton(" 2 ");
two2.addActionListener(this);
buttonPanel3.add(two2);
three3 = new JButton(" 3 ");
three3.addActionListener(this);
buttonPanel3.add(three3);
subtractButton = new JButton(" - ");
subtractButton.addActionListener(this);
buttonPanel3.add(subtractButton);
onebyButton = new JButton("1/x");
onebyButton.addActionListener(this);
buttonPanel3.add(onebyButton);
cp.add(buttonPanel3);
buttonPanel4 = new JPanel();
buttonPanel4.setLayout(new FlowLayout());
zero0 = new JButton(" 0 ");
zero0.addActionListener(this);
buttonPanel4.add(zero0);
dotButton = new JButton(" . ");
dotButton.addActionListener(this);
buttonPanel4.add(dotButton);
percentileButton = new JButton(" % ");
percentileButton.addActionListener(this);
buttonPanel4.add(percentileButton);
addButton = new JButton(" + ");
addButton.addActionListener(this);
buttonPanel4.add(addButton);
equalsButton = new JButton(" = ");
equalsButton.addActionListener(this);
buttonPanel4.add(equalsButton);
cp.add(buttonPanel4);
}
public void showResult() {
boolean validOperands;
DecimalFormat df = new DecimalFormat("0.00");
try {
// operandOne = Double.parseDouble(operandOneField.getText());
// operandTwo = Double.parseDouble(operandTwoField.getText());
validOperands = true;
} catch(NumberFormatException nfe) {
validOperands = false;
}
if (validOperands) {
if (source == addButton) {
operandOne =Double.parseDouble(resultField.getText());
resultField.setText("0");
operator = 1;
}
else if (source == subtractButton) {
operandOne =Double.parseDouble(resultField.getText());
resultField.setText("0");
operator = 2;
}
else if (source == multiplyButton) {
operandOne = Double.parseDouble(resultField.getText());
resultField.setText("0");
operator = 3;
}
else if (source == divideButton) {
operandOne = Double.parseDouble(resultField.getText());
resultField.setText("0");
operator = 4;
}
else if (source == percentileButton) {
operandOne =Double.parseDouble(resultField.getText());
resultField.setText("0");
operator = 5;
}
else if (source == equalsButton) {
operandTwo = Double.parseDouble(resultField.getText());
switch(operator){
case 1:
resultField.setText(Double.toString(operandOne + operandTwo));
operandOne = 0.0;
operandTwo = 0.0;
break;
case 2:
resultField.setText(Double.toString(operandOne - operandTwo));
operandOne = 0.0;
operandTwo = 0.0;
break;
case 3:
resultField.setText(Double.toString(operandOne * operandTwo));
operandOne = 0.0;
operandTwo = 0.0;
break;
case 4:
if (operandTwo != 0.0){
resultField.setText(Double.toString(operandOne / operandTwo));
operandOne = 0.0;
operandTwo = 0.0;}
else{
resultField.setText("0");}
break;
case 5:
resultField.setText(Double.toString(operandOne % operandTwo));
operandOne = 0.0;
operandTwo = 0.0;
}
}
else if (source == onebyButton) {
if (resultField.getText().equals("0"))
resultField.setText("0");
else
resultField.setText(Double.toString(1.0 / Double.parseDouble(resultField.getText())));
}
else if (source == one1) {
if (resultField.getText().equals("0"))
resultField.setText("1");
else
resultField.setText(resultField.getText() + "1");
}
else if (source == two2) {
if (resultField.getText().equals("0"))
resultField.setText("2");
else
resultField.setText(resultField.getText() + "2");
}
else if (source == three3) {
if (resultField.getText().equals("0"))
resultField.setText("3");
else
resultField.setText(resultField.getText() + "3");
}
else if (source == four4) {
if (resultField.getText().equals("0"))
resultField.setText("4");
else
resultField.setText(resultField.getText() + "4");
}
else if (source == five5) {
if (resultField.getText().equals("0"))
resultField.setText("5");
else
resultField.setText(resultField.getText() + "5");
}
else if (source == six6) {
if (resultField.getText().equals("0"))
resultField.setText("6");
else
resultField.setText(resultField.getText() + "6");
}
else if (source == seven7) {
if (resultField.getText().equals("0"))
resultField.setText("7");
else
resultField.setText(resultField.getText() + "7");
}
else if (source == eight8) {
if (resultField.getText().equals("0"))
resultField.setText("8");
else
resultField.setText(resultField.getText() + "8");
}
else if (source == nine9) {
if (resultField.getText().equals("0"))
resultField.setText("9");
else
resultField.setText(resultField.getText() + "9");
}
else if (source == zero0) {
if (resultField.getText().equals("0"))
resultField.setText("0");
else
resultField.setText(resultField.getText() + "0");
}
else if (source == dotButton) {
if (resultField.getText().equals("0"))
resultField.setText("0.");
else if (resultField.getText().indexOf('.') == -1){
resultField.setText(resultField.getText() + ".");
}
else{}
}
else if (source == cancelButton) {
resultField.setText("0");
}
else if (source == backButton) {
if (!(resultField.getText().equals("0") || resultField.getText().equals("0.0")) && resultField.getText().length() > 1){
resultField.setText(resultField.getText().substring(0,resultField.getText().length()-1));
}
}
} else
resultField.setText("Invalid operand");
}
public void actionPerformed(ActionEvent ae) {
source = ae.getSource();
showResult();
}
}
|
More
Free Java Sample Code |