I'm new into Java... and I've got this idea of building a scientific calculator and after I implemented some of the actionListeners
I've got the following error.
Exception in thread "main" java.lang.StackOverflowError at java.awt.Insets.(Insets.java:103) at sun.awt.windows.WToolkit.getScreenInsets(Native Method) at sun.awt.windows.WToolkit.getScreenInsets(WToolkit.java:567) at java.awt.Window.init(Window.java:498) at java.awt.Window.(Window.java:536) at java.awt.Frame.(Frame.java:420) at javax.swing.JFrame.(JFrame.java:224) at GUI.(GUI.java:29) at actionListeners.(actionListeners.java:9) at GUI.(GUI.java:9) at actionListeners.(actionListeners.java:9) at GUI.(GUI.java:9) at actionListeners.(actionListeners.java:9) at GUI.(GUI.java:9) at actionListeners.(actionListeners.java:9) at GUI.(GUI.java:9) at actionListeners.(actionListeners.java:9)
and this error keeps showing alot . What could be the problem ?
Here is the code
public GUI() {
super("Calculator");
setLayout(new GridLayout(5,2));
result = new JTextArea();
result.setEditable(false);
add(result);
divide.addActionListener(actionListeners);
add(divide);
multiply.addActionListener(actionListeners);
add(multiply);
substract.addActionListener(actionListeners);
add(substract);
sum.addActionListener(actionListeners);
add(sum);
for(int i=0;i<=numberButtons.length-1;i++)
{
numberButtons[i]= new JButton(Integer.toString(i));}
add(numberButtons[7]);
add(numberButtons[8]);
add(numberButtons[9]);
add(C);
add(CE);
add(numberButtons[4]);
add(numberButtons[5]);
add(numberButtons[6]);
add(sqrt);
add(cubic);
add(numberButtons[1]);
add(numberButtons[2]);
add(numberButtons[3]);
add(percentage);
add(divideByOne);
add(numberButtons[0]);
add(point);
add(square);
add(OK);
}
public void setTextResult(String a) {
result.setText(a);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.naming.spi.DirStateFactory.Result;
public class actionListeners implements ActionListener {
Functions fn = new Functions();
GUI go = new GUI();
public void actionPerformed(ActionEvent e) {
String x = e.getActionCommand();
switch (x) {
case "/":
fn.divide(fn.getA(), fn.getB());
go.setTextResult(Double.toString(fn.getResult()));
break;
case "*":
fn.multiply(fn.getA(), fn.getB());
break;
case "-":
fn.substract(fn.getA(), fn.getB());
break;
case "+":
fn.sum(fn.getA(), fn.getB());
break;
case "+-":
fn.divide(fn.getA(), fn.getB());
break;
case "C":
go.setTextResult(" ");
break;
case "CE":
go.setTextResult(" ");
fn.setResult(0);
break;
case "sqrt":
fn.sqrt(fn.getA());
break;
case "OK":
go.setTextResult(Double.toString(fn.getResult()));
break;
case "SQRT":
break;
case "%":
break;
case "x^2":
break;
case "x^3":
break;
case "1/x":
break;
default:
go.setTextResult("Eroare");
break;
}
}
}