java - 运行时出现StackOverflow错误

标签 java stack-overflow

我的代码可以编译,但是当我运行它时,会弹出一条奇怪的错误消息。

错误消息显示

"java.lang.StackOverflowError:null(in sun.awt.Win32GraphicsConfig).

它应该做的是打印出一个带有 4x10 按钮阵列的面板,其中一个按钮列出了迄今为止所有存储的信息。这些按钮现在没有任何作用,但这很好,因为我现在只关心实际的图形。还有另一个与数组列表相关的类,如果需要,我可以将其放入注释中。

这是代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.*;
import java.io.File;
import java.io.PrintWriter;
public class CulminatingProjectGUI extends JFrame implements ActionListener
{
    private static JButton[][] jbtNumButtons = new JButton[10][4];
    private static JButton jbtList = new JButton("List");
    ArrayList<Culminating> seats = new ArrayList<Culminating>();
    public CulminatingProjectGUI()
    {
    //Construct JFame object as a container for other objects
    JFrame frame = new JFrame("Fly By Buddies");
    //Set the dimensions of the window
    frame.setSize(750, 720);
    //Creates a pane for content
    JPanel pane = new JPanel();
    pane.setLayout(new GridLayout(11, 4));


    jbtList.addActionListener(new CulminatingProjectGUI());
    for (int m = 1,n = 1; n < 11;)
    {

        jbtNumButtons[n][m].addActionListener(new CulminatingProjectGUI());
        if(n == 1)
        {
            jbtNumButtons[n][m].setText(m + "A");
        }
        else if(n == 2)
        {
            jbtNumButtons[n][m].setText(m + "B");
        }
        else if(n == 3)
        {
            jbtNumButtons[n][m].setText(m + "C");
        }
        else if(n == 4)
        {
            jbtNumButtons[n][m].setText(m + "D");
        }
        pane.add(jbtNumButtons[n][m]);
        m++;

        if(m > 4)
        {
            n++;
            m = 0;
        }
    }
    //add content pane to a frame
    pane.add(jbtList);
    frame.setContentPane(pane);


    //Display the frame - window
    frame.setVisible(true);
    //Bring the window to front
    frame.toFront();


    }
    public static void main(String []args)
    {
        CulminatingProjectGUI frame = new CulminatingProjectGUI();
        //Create seat array. Still testing.
    }
    public void actionPerformed(ActionEvent e)
    {
        if (e.getActionCommand().equals("List"))
        {
            String listedFlyers = "";
            for (int h =0;h< 40;h++)
            {
                 listedFlyers = listedFlyers + seats.get(h).toString() + "\n";
            }

            JTextArea text = new JTextArea(listedFlyers, 10, 40);
            JScrollPane scroll = new JScrollPane(text);
        }

        else if (e.getActionCommand().equals(""))
        {

        }
    }
}

最佳答案

jbtNumButtons[n][m].addActionListener(new CulminatingProjectGUI());

问题就在这里。您创建 CulminateProjectGUI 的新实例,并在构造函数中一次又一次地创建它。您应该考虑以下因素:

jbtNumButtons[n][m].addActionListener(this);

关于java - 运行时出现StackOverflow错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914656/

相关文章:

Java - 从 lambda 中更改最终变量的值

java - 如何在java中解压zip文件中的zip文件

compatibility - 如何使用java应用程序检查jre版本

java - 将第一个列表和最后一个列表中的特定值保存到 SQLite

c++ - 将数组传递给 C++ 中的函数时如何避免堆栈溢出?

java - WCF 互操作性测试

Java数独回溯递归不断给出StackOverflow

java - StackOverFlowError SpannableString 是什么意思?

Java : Writing an object to a file avoiding java. lang.StackOverflowError

c# - 无法计算表达式,因为当前线程处于堆栈溢出状态。(C#)