import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
private int rowNumber = 5;
private int buttonNumber = 19;
private int operationNumber = 4;
String[] buttonString
= {"7",
"8",
"9",
"+",
"4", "5", "6", "-",
"1", "2", "3", "*",
".", "/", "C", "√",
"+/-", "=", "0"};
int[] dimW = {300, 45, 100, 90};
int[] dimH = {35, 40};
boolean[] function = new boolean[operationNumber];
double[] temporary = {0,0};
CalculatorSwing() {
super("Kalkulatorek");
setDesign();
setSize(300, 240);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(grid);
for (int i = 0; i < 4; i++)
function[i] = false;
for (int i = 0; i < 5; i++)
row[0].setLayout(f1);
for (int i = 1; i < 5; i++)
row[i].setLayout(f2);
for (int i = 0; i < buttonNumber; i++) {
button[i].setText(buttonString[i]);
button[i].setFont(font);
button[i].addActionListener(this);
}
display.setFont(font);
display.setEditable(false);
display.setPreferredSize(displayDimension);
// ustawienie szerokosci przyciskow aby je dopasowac do okienka
for (int i = 0; i < 14; i++)
button[i].setPreferredSize(regularDimension);
for (int i = 14; i < buttonNumber - 1; i++)
button[i].setPreferredSize(rColumnDimension);
button[18].setPreferredSize(zeroButDimension);
setVisible(true);
for(int i=0; i<=4; i++) add(row[i]);
row[0].add(display);
for (int i = 0; i < 4; i++) {
row[1].add(button[i]);
}
row[1].add(button[14]);
for (int i = 4; i < 8; i++) {
row[2].add(button[i]);
}
row[2].add(button[15]);
for (int i = 8; i < 12; i++)
{
row[3].add(button[i]);
}
row[3].add(button[16]);
row[4].add(button[18]);
for (int i = 12; i < 14; i++) {
row[4].add(button[i]);
}
row[4].add(button[17]);
}
public void clear() {
try {
display.setText("");
for(int i = 0; i < 4; i++)
function[i] = false;
for(int i = 0; i < 2; i++)
temporary[i] = 0;
}
}
public final void setDesign() {
try {
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
}
}
public void getSqrt() {
try {
double value
= Math.
sqrt(Double.
parseDouble(display.
getText()));
display.
setText(Double.
toString(value
));
}
}
public void getPosNeg() {
try {
double value
= Double.
parseDouble(display.
getText());
if(value != 0) {
value = value * (-1);
display.
setText(Double.
toString(value
));
}
else {
}
}
}
public void getResult() {
double result = 0;
temporary
[1] = Double.
parseDouble(display.
getText());
try {
if(temp0.contains("-")) {
String[] temp00
= temp0.
split("-",
2);
temporary
[0] = (Double.
parseDouble(temp00
[1]) * -1);
}
if(temp1.contains("-")) {
String[] temp11
= temp1.
split("-",
2);
temporary
[1] = (Double.
parseDouble(temp11
[1]) * -1);
}
}
try {
if(function[2] == true)
result = temporary[0] * temporary[1];
else if(function[3] == true)
result = temporary[0] / temporary[1];
else if(function[0] == true)
result = temporary[0] + temporary[1];
else if(function[1] == true)
result = temporary[0] - temporary[1];
display.
setText(Double.
toString(result
));
for(int i = 0; i < 4; i++)
function[i] = false;
}
}
if(ae.getSource() == button[0])
display.append("7");
if(ae.getSource() == button[1])
display.append("8");
if(ae.getSource() == button[2])
display.append("9");
if(ae.getSource() == button[3]) {
temporary
[0] = Double.
parseDouble(display.
getText());
function[0] = true;
display.setText("");
}
if(ae.getSource() == button[4])
display.append("4");
if(ae.getSource() == button[5])
display.append("5");
if(ae.getSource() == button[6])
display.append("6");
if(ae.getSource() == button[7]) {
temporary
[0] = Double.
parseDouble(display.
getText());
function[1] = true;
display.setText("");
}
if(ae.getSource() == button[8])
display.append("1");
if(ae.getSource() == button[9])
display.append("2");
if(ae.getSource() == button[10])
display.append("3");
if(ae.getSource() == button[11]) {
temporary
[0] = Double.
parseDouble(display.
getText());
function[2] = true;
display.setText("");
}
if(ae.getSource() == button[12])
display.append(".");
if(ae.getSource() == button[13]) {
temporary
[0] = Double.
parseDouble(display.
getText());
function[3] = true;
display.setText("");
}
if(ae.getSource() == button[14])
clear();
if(ae.getSource() == button[15])
getSqrt();
if(ae.getSource() == button[16])
getPosNeg();
if(ae.getSource() == button[17])
getResult();
if(ae.getSource() == button[18])
display.append("0");
}
public static void main
(String[] arguments
) {
CalculatorSwing c = new CalculatorSwing();
}
}