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.