Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError

Imagen de begibela
0 puntos

Alguien me puede ayudar? Al añadir este codigo
Sala MiSala = new Sala();
MiSala.setVisible(true);

a mi programa me da el siguiente error:

Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.awt.X11GraphicsConfig.pGetBounds(Native Method)
at sun.awt.X11GraphicsConfig.getBounds(X11GraphicsConfig.java:336)
at java.awt.Window.init(Window.java:284)
at java.awt.Window.(Window.java:318)
at java.awt.Frame.(Frame.java:419)
at java.awt.Frame.(Frame.java:384)
at javax.swing.JFrame.(JFrame.java:150)
at Sala.(Sala.java:98)
at Menu.(Menu.java:18)
LO que quiero hacer es estando en la pantalla Menu cerrar esta y volver a la pantalla Sala. (Las clases Menu.java y Sala.java son asi: public class Menu extends JDialog y public class Sala extends JFrame)
¿alguien me puede ayudar? no consigo avanzar.

import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

El codigo:

public class Sala extends JFrame {
Menu MiMenu = new Menu(null);
private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JButton BotonEntrar = null;
private JButton BotonSalir = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;

/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(164, 78, 400, 43));
jLabel1.setText("Encender el sistema tardara alrededor de un minuto");
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(106, 31, 508, 32));
jLabel.setText("Pulse ENTRAR para encender el sistema o SALIR para salir del sistema");
jPanel = new JPanel();

jPanel.setLayout(null);
jPanel.add(getBotonEntrar(), null);
jPanel.add(getBotonSalir(), null);
jPanel.add(jLabel, null);
jPanel.add(jLabel1, null);
}
return jPanel;
}

/**
* This method initializes BotonEntrar
*
* @return javax.swing.JButton
*/
private JButton getBotonEntrar() {
if (BotonEntrar == null) {
BotonEntrar = new JButton();
BotonEntrar.setBounds(new Rectangle(30, 309, 226, 232));
BotonEntrar.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/entrar.jpg"));
BotonEntrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// TODO Auto-generated Event stub actionPerformed()
MiMenu.setVisible(true);
Sala.this.setVisible(false);
}
});
}
return BotonEntrar;
}

/**
* This method initializes BotonSalir
*
* @return javax.swing.JButton
*/
private JButton getBotonSalir() {
if (BotonSalir == null) {
BotonSalir = new JButton();
BotonSalir.setBounds(new Rectangle(428, 314, 225, 227));
BotonSalir.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/Salir.jpg"));
}
return BotonSalir;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Sala thisClass = new Sala();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

/**
* This is the default constructor
*/
public Sala() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(690, 596);
this.setContentPane(getJPanel());
this.setName("Sistema");

}

}

import java.awt.Frame;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JLabel;

import javax.swing.ImageIcon;

public class Menu extends JDialog {
//Microfonos MiMicro = new Microfonos(null);
Sala MiSala = new Sala();
private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JButton BotonReunion = null;
private JButton BotonSalir = null;
private JButton BotonOpciones = null;
private JButton BotonMicro = null;
private JButton BotonAudiovi = null;
private JLabel jLabel = null;
private JButton BotonVideoConfe = null;
private JButton BotonDeTodo = null;

/**
* @param owner
*/
public Menu(Frame owner) {
super(owner);
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(932, 932);
this.setContentPane(getJPanel());
this.setName("menu");
this.setTitle("Menu de la sala");
}

/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(14, 1, 556, 61));
jLabel.setText(" ¿QUE QUIERES HACER EN LA SALA?");
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.add(getBotonReunion(), null);
jPanel.add(getBotonSalir(), null);
jPanel.add(getBotonOpciones(), null);
jPanel.add(getBotonMicro(), null);
jPanel.add(getBotonAudiovi(), null);
jPanel.add(jLabel, null);
jPanel.add(getBotonVideoConfe(), null);
jPanel.add(getBotonDeTodo(), null);
}
return jPanel;
}

/**
* This method initializes BotonReunion
*
* @return javax.swing.JButton
*/
private JButton getBotonReunion() {
if (BotonReunion == null) {
BotonReunion = new JButton();
BotonReunion.setBounds(new Rectangle(16, 359, 225, 227));
BotonReunion.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/PrincipalReunion.jpg"));
BotonReunion.setText("");
}
return BotonReunion;
}

/**
* This method initializes BotonSalir
*
* @return javax.swing.JButton
*/
private JButton getBotonSalir() {
if (BotonSalir == null) {
BotonSalir = new JButton();
BotonSalir.setBounds(new Rectangle(75, 645, 219, 226));
BotonSalir.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/Salir.jpg"));
BotonSalir.setText("");
BotonSalir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("Ha salido al menu principal"); // TODO Auto-generated Event stub actionPerformed()
Menu.this.setVisible(false);
// MiMicro.setVisible(true);
MiSala.setVisible(true);
}
});
}
return BotonSalir;
}

/**
* This method initializes BotonOpciones
*
* @return javax.swing.JButton
*/
private JButton getBotonOpciones() {
if (BotonOpciones == null) {
BotonOpciones = new JButton();
BotonOpciones.setBounds(new Rectangle(345, 796, 97, 76));
BotonOpciones.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/opcionesAvanzadas.jpg"));
BotonOpciones.setText("");
}
return BotonOpciones;
}

/**
* This method initializes BotonMicro
*
* @return javax.swing.JButton
*/
private JButton getBotonMicro() {
if (BotonMicro == null) {
BotonMicro = new JButton();
BotonMicro.setBounds(new Rectangle(316, 213, 245, 237));
BotonMicro.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/microfonos.jpg"));
BotonMicro.setText("");
BotonMicro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("has entardo al menu de los microfonos"); // TODO Auto-generated Event stub actionPerformed()
Menu.this.setVisible(false);

}
});
}
return BotonMicro;
}

/**
* This method initializes BotonAudiovi
*
* @return javax.swing.JButton
*/
private JButton getBotonAudiovi() {
if (BotonAudiovi == null) {
BotonAudiovi = new JButton();
BotonAudiovi.setBounds(new Rectangle(14, 93, 227, 223));
BotonAudiovi.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/PrincipalAudiovisuales.jpg"));
BotonAudiovi.setText("");
}
return BotonAudiovi;
}

/**
* This method initializes BotonVideoConfe
*
* @return javax.swing.JButton
*/
private JButton getBotonVideoConfe() {
if (BotonVideoConfe == null) {
BotonVideoConfe = new JButton();
BotonVideoConfe.setBounds(new Rectangle(644, 93, 248, 226));
BotonVideoConfe.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/PrincipalVideoconferencia.jpg"));
BotonVideoConfe.setText("");
}
return BotonVideoConfe;
}

/**
* This method initializes BotonDeTodo
*
* @return javax.swing.JButton
*/
private JButton getBotonDeTodo() {
if (BotonDeTodo == null) {
BotonDeTodo = new JButton();
BotonDeTodo.setBounds(new Rectangle(644, 357, 248, 230));
BotonDeTodo.setIcon(new ImageIcon("/home/jessica/workspace/automatizazioa/imagenes/PrincipalDetodo.jpg"));
}
return BotonDeTodo;
}

}

Imagen de Anónimo
+1
0
-1

Hola, primero que nada te quiero decir que soy un principiante en java, y segundo me parece que el error esta en que dentro de la clase Sala creas un menu, y dentro de menu creas una sala. Asi que como ves si creaste una sala, esta creara un menu, que asu vez creara una sala, y asi sucesivamente hasta que la maquina no de mas y te tire ese error.

espero que te sirva, chau

+1
0
-1