线程“主”java.lang.***Error actionListeners 中的异常
Posted
技术标签:
【中文标题】线程“主”java.lang.***Error actionListeners 中的异常【英文标题】:Exception in thread "main" java.lang.***Error actionListeners 【发布时间】:2013-12-09 18:25:20 【问题描述】:我是 Java 新手...我有构建科学计算器的想法,在我实现了一些 actionListeners
之后,我遇到了以下错误。
线程“主”java.lang.***Error 中的异常 在 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 类,但我认为这不是问题。 *** 通常意味着你有一个不会停止的递归函数调用。显然第 9 条有一个... @Haneev... 是的,我读到它与某种递归函数有关,但我看不到我的问题。 What is a stack overflow error?的可能重复 【参考方案1】:您尚未提交完整的代码,但您似乎在 GUI
和 actionListeners
类之间存在循环依赖关系。每个都需要实例化另一个,从而导致堆栈跟踪,如图所示。只需在 GUI
中创建所需的 actionListeners
实例,反之则不然。
建议:
考虑使用 Action 在按钮之间共享功能【讨论】:
我明白了,剩下的代码是一堆数学运算的函数,我认为问题不存在。无论如何我理解你所说的,但是我如何将我的答案写在 JTextArea 中?为此,我需要一个 GUI 对象到 actionListeners 中。 我不知道该怎么做。 阅读Passing Information to a Method or a Constructor【参考方案2】:首先你在switch语句中使用的字符串是什么java版本。它是在java 7中实现的,在你的代码addActionListener(actionListeners)中你必须传递ActionListener对象的对象。检查这两个..
【讨论】:
以上是关于线程“主”java.lang.***Error actionListeners 中的异常的主要内容,如果未能解决你的问题,请参考以下文章
Java - 线程“主”java.lang.Error 中的异常:未解决的编译问题
错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]
错误:线程“主”java.lang.UnsatisfiedLinkError 中的异常:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(L
2 线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间