0

I am having problems making my window appear from my Java program and I get stack overflow error when I run my program.

Here's a sample of the code where I have problem:

public Ballot() {
     bp.addBallot();
     frame.setTitle("Ballot");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setSize(430,350);
     frame.setLocation(300,100);
     frame.setResizable(false);
     Container cont = frame.getContentPane();
     cont.setLayout(null);
     cont.setBackground(Color.GRAY);
     ButtonGroup bg = new ButtonGroup();
     JRadioButton[] buttons = new JRadioButton[numButtons];
     for (int i = 0; i < buttons.length; i++) {
         bg.add(buttons[i]);
     }
     JLabel label = new JLabel("Make your choice");
     label.setForeground(Color.BLUE);
     label.setFont(new Font("Arial", Font.BOLD, 11));
     next = new JButton("Next");
     next.setForeground(Color.GREEN);
     next.addActionListener(this);
     panel = new JPanel();
     for (int i = 0; i < buttons.length; i++) {
         panel.add(buttons[i]);
     }
     panel.add(next);
     cont.add(panel);
     setVisible(true);
 }

I was wondering where went wrong with my code.

Additional code that might help:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;

public class Ballot extends JPanel implements ActionListener {
  JPanel panel;
  JFrame frame = new JFrame();
  int numButtons;
  JRadioButton[] buttons;
  JButton next = new JButton();
  int votedOrNot;
  BallotProgram bp = new BallotProgram();

  public Ballot() {
     bp.addBallot();
     frame.setTitle("Ballot");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.setSize(430,350);
     frame.setLocation(300,100);
     frame.setResizable(false);
     frame.pack();
     frame.setVisible(true);
     Container cont = frame.getContentPane();
     cont.setLayout(null);
     cont.setBackground(Color.GRAY);
     ButtonGroup bg = new ButtonGroup();
     JRadioButton[] buttons = new JRadioButton[numButtons];
     for (int i = 0; i < buttons.length; i++) {
         bg.add(buttons[i]);
     }
     JLabel label = new JLabel("Make your choice");
     label.setForeground(Color.BLUE);
     label.setFont(new Font("Arial", Font.BOLD, 11));
     next = new JButton("Next");
     next.setForeground(Color.GREEN);
     next.addActionListener(this);
     panel = new JPanel();
     for (int i = 0; i < buttons.length; i++) {
         panel.add(buttons[i]);
     }
     panel.add(next);
     cont.add(panel);
     setVisible(true);
 }

 public void actionPerformed(ActionEvent a) {
     if (next.getText().equals("Cast Vote")) {
        if (votedOrNot == 0) {
            votedOrNot++;
        }
        else {
        }
     }
     else if (next.getText().equals("Login to Vote")) {
     }
  }

}

And the other class:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;

public class BallotProgram {

 String[] choices;
 int numOfChoices;

 public ArrayList<Ballot> addBallot() {
    File file = new File("ballots.txt");
    boolean exists = file.exists();
    ArrayList<Ballot> ballot = new ArrayList<Ballot>();
    Ballot b = new Ballot();
    try {
       Scanner s = new Scanner(file);
       while (s.hasNextLine()) {
           int ballotID = s.nextInt();
           s.nextLine();
           String ballotTitle = s.nextLine();
           choices = new String[numOfChoices];
           b.buttons = new JRadioButton[b.numButtons];
           for (int i = 0; i < b.numButtons; i++) {
                choices[i] = s.nextLine();
                b.buttons[i] = new JRadioButton(choices[i]);
           }
           Ballot bt = new Ballot();
           ballot.add(bt);
       }
       s.close();
    } catch (IOException f) {
      System.out.println("can't find the file");
    }
    return ballot;
 }

And what my terminal says:

Exception in thread "main" Exception in thread "main" java.lang.StackOverflowError
at sun.awt.X11GraphicsConfig.pGetBounds(Native Method)
at sun.awt.X11GraphicsConfig.getBounds(X11GraphicsConfig.java:314)
at java.awt.Window.init(Window.java:505)
at java.awt.Window.<init>(Window.java:537)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:189)
at Ballot.<init>(Ballot.java:10)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)

Thanks

ABY
  • 5
  • 4
  • Try running `pack()` before `setVisible()`. – Zulfe Apr 10 '16 at 03:39
  • Also, make sure that whatever you're running as a result of `bp.addBallot()` is not causing the stackOverflowException. It would be easier for us to tell you what's wrong if you provided us with a stack trace. – Zulfe Apr 10 '16 at 03:43
  • made an edit. not sure why window doesn't open + stack overflow error. – ABY Apr 10 '16 at 03:49

1 Answers1

0

A StackOverflowError happens to the best of us. Hell, the website is named after it. It's something just about every aspiring programmer encounters. Most of the time (for newer programmers), a StackOverflowError is caused when one method calls a method that calls the method that called it. Basically, an endless loop of method calls is created.

Following the information from your stack trace...

at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)
at BallotProgram.addBallot(BallotProgram.java:17)
at Ballot.<init>(Ballot.java:18)

We see that there is a clear loop between two points in your program. When we investigate those points...

public ArrayList<Ballot> addBallot() {
    ...
    Ballot b = new Ballot();
    ...
}

and

public Ballot() {
    bp.addBallot();
    ...
}

we see that the endless loop is created here. When we create a new Ballot object, its constructor calls bp.addBallot() which, in turn, hits the line Ballot b = new Ballot(), going back to the constructor. In the process of creating a new Ballot object, a new Ballot object is made, over and over until the StackOverflowError is thrown.

Zulfe
  • 820
  • 7
  • 25
  • How do I fix this problem? I want to be able to initialize a ballot and open it – ABY Apr 10 '16 at 04:19
  • I believe the best course of action would be to remove `bp.addBallot()` from the constructor of your `Ballot` class. I don't see why you would add an object you've yet to fully instantiate. – Zulfe Apr 10 '16 at 04:21