【发布时间】:2013-12-09 18:25:20
【问题描述】:
我是 Java 新手...我有构建科学计算器的想法,在我实现了一些 actionListeners 之后,我遇到了以下错误。
线程“主”java.lang.StackOverflowError 中的异常 在 java.awt.Insets.(Insets.java:103) 在 sun.awt.windows.WToolkit.getScreenInsets(本机方法) 在 sun.awt.windows.WToolkit.getScreenInsets(WToolkit.java:567) 在 java.awt.Window.init(Window.java:498) 在 java.awt.Window.(Window.java:536) 在 java.awt.Frame.(Frame.java:420) 在 javax.swing.JFrame.(JFrame.java:224) 在 GUI 处。(GUI.java:29) 在 actionListeners.(actionListeners.java:9) 在 GUI。(GUI.java:9) 在 actionListeners.(actionListeners.java:9) 在 GUI。(GUI.java:9) 在 actionListeners.(actionListeners.java:9) 在 GUI。(GUI.java:9) 在 actionListeners.(actionListeners.java:9) 在 GUI。(GUI.java:9) 在 actionListeners.(actionListeners.java:9)
and this error keeps showing alot . What could be the problem ?
这里是代码
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;
}
}
}
【问题讨论】:
-
您能否更具体地说明错误发生在哪里?
-
当我尝试运行代码时,我已经从控制台发布了日志。 PS:忘记添加 Functions 类,但我认为这不是问题。
-
StackOverflow 通常意味着你有一个不会停止的递归函数调用。显然第 9 条有一个...
-
@Haneev... 是的,我读到它与某种递归函数有关,但我看不到我的问题。
标签: java user-interface actionlistener