Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/04/2009, 13:59
Avatar de jhonnyfernando
jhonnyfernando
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá - Colombia
Mensajes: 103
Antigüedad: 18 años, 8 meses
Puntos: 1
De acuerdo Respuesta: Validar si una ventana interna esta abierta.

Hola dalbin_j.

Seria algo asi:

Principal.java
Código:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Principal extends JFrame
{
	// Variables de Instancia
	private int x;
	JDesktopPane escritorio = new JDesktopPane();
	JButton abrir = new JButton ("Abrir");
	Interno1 in;
	//Constructor de la clase principal
	public Principal()
	{
		super("Calculador de Raspawn");
		this.setSize(800, 600);
		setResizable(false);
		setLayout(null);
		Dimension pantalla, cuadro;
		pantalla = Toolkit.getDefaultToolkit().getScreenSize();
		cuadro = this.getSize();
		this.setLocation(((pantalla.width - cuadro.width) / 2), (pantalla.height - cuadro.height) / 2);
		setLayout(null);
		setContentPane(escritorio);
		abrir.setBounds(10, 10, 100, 20);
		add(abrir);
		abrir.addActionListener (new ActionListener()
		{
			public void actionPerformed (ActionEvent evt)
			{
				creaventana();
				
			}
		}
		);
		in = null;
	}
	
	/*Creación de la clase para crear la ventana interna*/
	public void creaventana (){
		if(in == null || in.isClosed()){
			in = new Interno1();
			in.setVisible(true);
			System.out.println(in.isEnabled());
			escritorio.add(in);
			
			try
			{
			   in.setSelected(true);
			}
			catch(Exception e)
			{
			}
			//abrir.setEnabled(false);
			repaint();			
		}
		else{
			System.out.println("La ventana ya se encuentra abierta.");
		}
		
	}
	public static void main (String [] args)
	{
		Principal p = new Principal ();
		p.setVisible(true);
		p.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent evt)
			{
				System.exit(0);
			}
		}
		);
	}
}
lo que hice fue:

Declarar el objeto in de la clase Interno1 como global y en el constructor lo seteo a null.

en el evento del boton verifico si sigue siendo null o si ya se ha cerrado para poderlo instanciar de nuevo y abrir la ventana interna.

Espero que eso sea lo que buscabas.
__________________
Gracias por los puntos!

Saludes ;-)