Java - Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

   
Vista:

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Hermann Hans (6 intervenciones) el 23/01/2013 02:34:10
Hola quisiera que alguien me pueda ayudar
tengo un jFrame que me sirve de ventana principal
en este tengo un jDesktopPane donde abro los jInternalFrame
pero mi problema radica en que los jInternalFrame se abran cuantas veces los llame o de clic

quisiera saber como hacer para que solo se abra una sola vez y me salga un mensaje (JOptionPane)
donde diga que el jInternalFrame ya esta abierto

Gracias espero sus respuestas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Hermann Hans (6 intervenciones) el 23/01/2013 03:50:52
Bueno ya lo solucione
Gracias y Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por xve (261 intervenciones) el 23/01/2013 07:53:00
Hola Hermann, nos puedes indicar como los solucionaste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Hermann Hans (6 intervenciones) el 24/01/2013 03:04:14
aqui se las dejo, espero les ayude

primero declarar el nombre del jInternalFrame de esta forma

public class View_Principal extends javax.swing.JFrame {

View_MovilidadesGruas masc ;

luego para verficar si esta cerrado o abierto algun jInternalFrame

public static boolean estacerrado(Object obj){
JInternalFrame[] activos=jDesktopPane1.getAllFrames();
boolean cerrado=true;
int i=0;
while (i<activos.length && cerrado){
if(activos[i]==obj){
cerrado=false;
}
i++;
}
return cerrado;
}

y por ultimo en el evento action performed o mousecliked
en mi caso de un JMenuItem

if(estacerrado(masc)) {
masc = new View_MovilidadesGruas();
jDesktopPane1.add(masc);
masc.setVisible(true);

}
else
{
JOptionPane.showMessageDialog(null,"LA VENTANA MOVILIDADES YA ESTA ABIERTA");
}


y con eso valida que solo se abra una vez el jInternalFrame cuando lo llamo del JMenuBar
pero ahora tengo otra duda

Tengo un formulario donde apretando un boton llamo a otro JInternalFrame
y ahi si tengo problema, porque lo llamo al otro JIFrame, luego cierro el formulario de donde llame, abro otra vez, otra vez llamo al JIFrame con el boton y ahi no lo valida
y si vuelvo a cerrar y vuelvo a abrir, otra vez lo llama y ya abrian muchos JIFrame abiertos con el boton

Si alguien puede ayudarme les agradeceria bastante
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por joel (1 intervención) el 20/11/2013 19:50:19
yo lo hice asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void ControlaInstancia(JInternalFrame inter){
 
boolean mostrar=true;
String Nombre=inter.getTitle();
for (int a=0;a<jDprincipal.getComponentCount();a++){     // verificar si es instancia de algun componente que ya este en el jdesktoppane
    if( inter.getClass().isInstance( jDprincipal.getComponent(a) )){
        JOptionPane.showMessageDialog(rootPane, "La ventana "+Nombre+" que interta abrir ya está abierta, cierre la ventana actual e intente nuevamente");
        System.out.println("esta instancia, no se debe mostrar");
        inter.toFront();
        jDprincipal.moveToFront(inter);
        mostrar=false;
 
    }else{
        System.out.println("no lo es, puede mostrarse");
    }
}
if(mostrar){
    inter.setSize(GetMedidaEcritorio());
    jDprincipal.add(inter); }
inter.show();
 
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Luis Angel (8 intervenciones) el 05/12/2013 06:00:04
Está muy bien el codigo, gracias por el aporte, lo único es que no valida cuando la ventana está minimizada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Samuel (1 intervención) el 17/02/2014 21:30:22
Excelente, me sirvió mucho el aporte, gracias por tu desinteresada colaboración
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Mijael mijael125@gmail.com (1 intervención) el 07/05/2014 23:30:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// en el InternalFrame poner los nombre en getToolTipText de propiedades ahora para cerrar un InternalFrame  cerrar // con dispose(); pa evitar problemas 
 
 public static void AbrirForm(JInternalFrame InternalFra)
    {
 
        String k="";
 
        JInternalFrame[]  a =ContenedorFormularios.getAllFrames();
        int filas =a.length;
        for(int i=0;i<filas;i++)
            {
                String c=a[i].getToolTipText();
 
                if (InternalFra.getToolTipText().compareTo(c)==0) {
 
                   k="Abierto";
 
 
                } else {
                }
            }
        if (k.compareTo("")==0) {
             ContenedorFormularios.add(InternalFra);
             InternalFra.show();
 
        } else {
 
            JOptionPane.showMessageDialog(" ya se encuentra abierta  " +getToolTipText());
 
 
        }
 
 
    }
 
 
// para usarlo ejemplo 
// fmClientes Clientes=new fmClientes();
//        AbrirForm(Clientes);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Kevin Arévalo a_kevin_are@hotmail.com (1 intervención) el 04/12/2014 00:35:36
hola buenas creo que vine muy tarde, pero tengo otra solución más sencilla.

crear el objeto a nivel de clase (no se si es recomendable)

1
frmIngresarCompra objIC=new frmIngresarCompra();

y en la acción del menú o botón colocar esto:

1
2
3
4
5
6
7
8
9
10
11
private void mitIngresarCompraActionPerformed(java.awt.event.ActionEvent evt) {
	if(objIC.isShowing())
	{
		//mensaje de que está abierto si se desea
	}
	else
	{
	jDesktopPane1.add(objIC);
	objIC.show();
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como evitar que un jInternalFrame se abra dos veces en un jDesktopPane

Publicado por Alex Arth chele.xela@hotmail.com (1 intervención) el 11/12/2014 20:58:46
Amigo tu Condicion me Sirvio andube buscando esto en muchos videos y paginas y esta condicion me ayudo gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar