Foros del Web » Programación para mayores de 30 ;) » Java »

Validar si una ventana interna esta abierta.

Estas en el tema de Validar si una ventana interna esta abierta. en el foro de Java en Foros del Web. Buenos dias, escribo por la siguiente razon ya que estuve buscando la respuesta por muchos medios pero no la encuentro, estoy incursionando en el mundo ...
  #1 (permalink)  
Antiguo 16/04/2009, 07:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Pregunta Validar si una ventana interna esta abierta.

Buenos dias, escribo por la siguiente razon ya que estuve buscando la respuesta por muchos medios pero no la encuentro, estoy incursionando en el mundo de java, y tengo ciertas dudas pero muchas las he encontrado solo, la pregunta en este caso es la siguiente, como puedo validar si ya tengo una ventana interna abierta, esto con el fin de no seguir abriendo la misma ventana cada vaz que oprima el boton, a continuacion coloco el codigo.

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");
	//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();
				
			}
		}
		);
	}
	
	/*Creación de la clase para crear la ventana interna*/
	public void creaventana (){
		
		Interno1 in = new Interno1 ();
		//if(in.isVisible()==false){
			in.setVisible(true);
			System.out.println(in.isEnabled()ntana);
			escritorio.add(in);
			
			try
			{
			   in.setSelected(true);
			}
			catch(Exception e)
			{
			}
			abrir.setEnabled(false);
			repaint();
						
			//if(in.isShowing()==false){
			//	abrir.setEnabled(true);
			//	repaint();
			//}
			
		//}
		
	}
	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);
			}
		}
		);
	}
}
Interno1.java

Código:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Interno1 extends JInternalFrame
{
	// Variables de Instacia
	//static int ventanas;
	static int posicionX = 30, posicionY=30;
	/**
	 * Constructor para Objetos
	 */
	
	
	public Interno1()
	{
		
		super("Ventana 1",
			true, //Resizable
			true, //Cerrar
			true, //Maximizar /minimizar
			true //Minimizar en pantalla
		);
		setSize(200,200);
		
		setLocation(posicionX + 30, posicionY +30);
		JTextField texto = new JTextField();
		texto.setSize(20, 40);
		add(texto);
		System.out.println(isEnabled());
		//setEnabled(true);
		
	}
}
No solo puede ser esta via, si alguien tiene otra sugerencia de como manejar el asunto, por ejemplo, si la ventana interna esta abierta, pero no activa, solo con colocarla activa, ambas mi sirven.
  #2 (permalink)  
Antiguo 16/04/2009, 13:59
Avatar de jhonnyfernando  
Fecha de Ingreso: abril-2006
Ubicación: Bogotá - Colombia
Mensajes: 103
Antigüedad: 18 años
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 ;-)
  #3 (permalink)  
Antiguo 16/04/2009, 14:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: Validar si una ventana interna esta abierta.

Que bien, por logica y leyendo mas o menos estaba cerca, yo estaba intentando validarlo por "in.isVisible()" pero no le encontraba la vuelta, muchas gracias, tengo otra consulta pero es con el manejo de imagenes, no se si esta bien consultarlo por aqui o abrir otro tema.
  #4 (permalink)  
Antiguo 16/04/2009, 18:31
Avatar de jhonnyfernando  
Fecha de Ingreso: abril-2006
Ubicación: Bogotá - Colombia
Mensajes: 103
Antigüedad: 18 años
Puntos: 1
Respuesta: Validar si una ventana interna esta abierta.

si claro, puedes preguntar cualquier cosa sobre java, entre todos te aqyudamos!!
__________________
Gracias por los puntos!

Saludes ;-)
  #5 (permalink)  
Antiguo 17/05/2009, 15:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Validar si una ventana interna esta abierta.

Ayuda por favor, venga y les explico... compadres tengo mi menu al cual le agregue el menu item, de ese menu item quiero abrir una nueva ventana pero interna no encuentro la forma.....Auyda xf
  #6 (permalink)  
Antiguo 18/05/2009, 06:59
Avatar de jhonnyfernando  
Fecha de Ingreso: abril-2006
Ubicación: Bogotá - Colombia
Mensajes: 103
Antigüedad: 18 años
Puntos: 1
Respuesta: Validar si una ventana interna esta abierta.

Cita:
Iniciado por juanjosemoreno Ver Mensaje
Ayuda por favor, venga y les explico... compadres tengo mi menu al cual le agregue el menu item, de ese menu item quiero abrir una nueva ventana pero interna no encuentro la forma.....Auyda xf
Pon un poco de código para poderte orientar.
__________________
Gracias por los puntos!

Saludes ;-)
  #7 (permalink)  
Antiguo 19/05/2009, 18:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: Validar si una ventana interna esta abierta.

compadre tu codigo me ayudo bastante, logre abrir lo unico que ise fue que al addActionListener le pase el nombre del menuitem gracias por tu ayuda

Última edición por juanjosemoreno; 19/05/2009 a las 18:43
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:53.