线程“主”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】:

您尚未提交完整的代码,但您似乎在 GUIactionListeners 类之间存在循环依赖关系。每个都需要实例化另一个,从而导致堆栈跟踪,如图所示。只需在 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 堆空间

线程“主”java.lang.NoClassDefFoundError 中的异常:

线程“主”java.lang.ArithmeticException 中的异常:/ 为零