Autor Tema: Me crea Infinitas Ventanas  (Leído 2336 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado quatreduros

  • The newbie
  • *
  • Mensajes: 1
Me crea Infinitas Ventanas
« : febrero 27, 2011, 02:08:53 pm »
Con el siguiente código el problema que tengo es que me aparecen infinitas ventanas.

Creo dos clases:
1)Clase principal llamada Menu

Creo la ventana con algunos botones.

2)Creo una clases de escucha llamada PrimerWindowListener que implementa la clase WindowListener en la cual se indica que cuando se cierre la ventana salga un mensaje.


CÓDIGO

import javax.swing.*;

import java.awt.event.*;
import java.awt.*;


public class Menu extends JFrame {

   private JMenuBar mb;   
   private JMenu menu1, menu2;
    private JMenuItem mi1, mi2, mi3, mi4, mi5;
   
   public Menu(){
      JFrame ventana=new JFrame ();
      
      ventana.setTitle("VisorImágenes");//métodos existentes en JFrame
      
      ventana.setBounds(125,70,800,600);
      
      ventana.setVisible(true);
      ventana.setResizable(true);

               addWindowListener(new PrimerWindowListener());
               
                }//constructor
   
   
   public static void main(String []args){      
      Menu menu=new Menu();
      menu.setVisible(true);
   }//main
   
}//class


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JOptionPane;


public class PrimerWindowListener extends Menu implements WindowListener {
   

   public void windowActivated(WindowEvent e){   
   }
   
   //invocado cuando la ventana se cierra
   public void windowClosed(WindowEvent e){

   }
   
   //invocado cuando se aprieta el botón X
   public void windowClosing(WindowEvent e){
      JOptionPane.showMessageDialog(null,"La ventana se cerrará");
      System.exit(0);      
   }//
   
   //invocado cuando la ventana pasa a un segundo plano.

   public void windowDeactivated(WindowEvent e){   
   }
   
   public void windowDeiconified(WindowEvent e){
   }
   
   //   cuando se transforma en icono.
   public void windowIconified(WindowEvent e){   
   }
   //cuando se abre
   public void windowOpened(WindowEvent e){   
   }
   
}//class


Desconectado hkadejo

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 3345
Re: Me crea Infinitas Ventanas
« Respuesta #1 : febrero 28, 2011, 10:01:17 am »
Viejo tu problema y solución esta en esta linea de codigo (segun me parece)

Código: [Seleccionar]
public class PrimerWindowListener extends Menu implements WindowListener {
Si te fijas el listener que has creado esta extendiendo a tu clase Menu y Menu utiliza tu listener para detectar cuando se cierra. Asi que a mi parecer ahi esta la recursividad que genera n ventanas.

Hace que tu listener no extienda de Menu y proba.