StackOverflowError in Eclipse Oxygen using Swing

0

I have this error when I run the interface

  

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError     at java.awt.Window.init (Unknown Source) at   java.awt.Window. (Unknown Source) at   java.awt.Frame. (Unknown Source) at   java.awt.Frame. (Unknown Source) at   javax.swing.JFrame. (Unknown Source)       at sisley.main.User_Create. (User_Create.java:55)       at sisley.main.User_Create. (User_Create.java:19) Exception in thread "AWT-EventQueue-0" Exception in thread "AWT-EventQueue-0"

This is my code that is just a class that complements the main interface

package sisley.main;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class User_Create extends JFrame {   
    private User_Create z1 = new User_Create();
    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;
    private JTextField textField_4;
    private JTextField textField_5;
    private JTextField textField_6;
    private JTextField textField_7;
    private JTextField textField_8;

    int idMixure = 0;
    int count = 0;
    ArrayList<Parlamentarios> p1 = new ArrayList<Parlamentarios>();
    ArrayList<Asesores> A1 = new ArrayList<Asesores>();

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    User_Create frame = new User_Create();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public User_Create() {
        setTitle("Creacion de Usuario");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 527, 477);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        Parlamentarios pr1 = new Parlamentarios();
        Asesores as1 = new Asesores();  
        JButton btnNewButton = new JButton("Crear");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                 pr1.setUsuario(textField.getText());
                JOptionPane.showMessageDialog(null, pr1.getIdPar());
                 p1.add(idMixure, pr1);                  

            }
        });
        btnNewButton.setBounds(43, 353, 89, 23);
        contentPane.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("Cancelar");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                z1.hide();
            }
        });
        btnNewButton_1.setBounds(362, 353, 89, 23);
        contentPane.add(btnNewButton_1);

        textField = new JTextField();
        textField.setBounds(200, 42, 86, 20);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setBounds(134, 93, 86, 20);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        textField_2 = new JTextField();
        textField_2.setBounds(134, 149, 86, 20);
        contentPane.add(textField_2);
        textField_2.setColumns(10);

        textField_3 = new JTextField();
        textField_3.setBounds(134, 203, 86, 20);
        contentPane.add(textField_3);
        textField_3.setColumns(10);

        textField_4 = new JTextField();
        textField_4.setBounds(137, 264, 86, 20);
        contentPane.add(textField_4);
        textField_4.setColumns(10);

        textField_5 = new JTextField();
        textField_5.setBounds(275, 93, 86, 20);
        contentPane.add(textField_5);
        textField_5.setColumns(10);

        textField_6 = new JTextField();
        textField_6.setBounds(275, 149, 86, 20);
        contentPane.add(textField_6);
        textField_6.setColumns(10);

        textField_7 = new JTextField();
        textField_7.setBounds(275, 203, 86, 20);
        contentPane.add(textField_7);
        textField_7.setColumns(10);

        textField_8 = new JTextField();
        textField_8.setBounds(275, 264, 86, 20);
        contentPane.add(textField_8);
        textField_8.setColumns(10);

        JLabel lblParlamentario = new JLabel("Parlamentario");
        lblParlamentario.setBounds(104, 44, 86, 17);
        contentPane.add(lblParlamentario);

        JLabel lblParlamentario_1 = new JLabel("Asesor 1");
        lblParlamentario_1.setBounds(155, 124, 54, 14);
        contentPane.add(lblParlamentario_1);

        JLabel lblAsesor = new JLabel("Asesor 3");
        lblAsesor.setBounds(155, 178, 54, 14);
        contentPane.add(lblAsesor);

        JLabel lblAsesor_3 = new JLabel("Asesor 5");
        lblAsesor_3.setBounds(155, 239, 54, 14);
        contentPane.add(lblAsesor_3);

        JLabel lblAsesor_1 = new JLabel("Asesor 2");
        lblAsesor_1.setBounds(295, 124, 54, 14);
        contentPane.add(lblAsesor_1);

        JLabel lblAsesor_2 = new JLabel("Asesor 4");
        lblAsesor_2.setBounds(295, 180, 54, 14);
        contentPane.add(lblAsesor_2);

        JLabel lblAsesor_4 = new JLabel("Asesor 6");
        lblAsesor_4.setBounds(295, 239, 54, 14);
        contentPane.add(lblAsesor_4);

        JLabel lblAsesor_5 = new JLabel("Asesor 7");
        lblAsesor_5.setBounds(155, 295, 65, 14);
        contentPane.add(lblAsesor_5);

        JLabel lblAsesort = new JLabel("Asesort 8");
        lblAsesort.setBounds(295, 295, 66, 14);
        contentPane.add(lblAsesort);
    }
}
    
asked by Luis Ortiz 12.10.2017 в 05:43
source

1 answer

0

Avoid this StackOverflowError :

  • You can choose to delete the line private User_Create z1 = new User_Create(); , since you already have an instance that you called frame within the thread of execution in main , that way you avoid the infinite recursion that produces the overflow. (or if you want to use'z1 'you have to discard the instance frame )

  • On the other hand and without causing the error, the hide() method. It is in disuse from JDK 1.5 , replaced by setVisible() , logically you should remove that z1.hide() either by System.exit() setVisible(false) or by the dispose() method, this depending on your requirements between one or the other because it they behave in a different way.

answered by 12.10.2017 в 10:57