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

Inmovilizar Ventanas

Estas en el tema de Inmovilizar Ventanas en el foro de Java en Foros del Web. Bueno, quiero hacer una aplicacion. Se que debo usar un JFrame como la ventana principal y JDialogs como ventanas secundarias. Lo que yo quisiera hacer ...
  #1 (permalink)  
Antiguo 27/05/2009, 13:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Inmovilizar Ventanas

Bueno, quiero hacer una aplicacion. Se que debo usar un JFrame como la ventana principal y JDialogs como ventanas secundarias. Lo que yo quisiera hacer es inmovilizar esos JDialogs, he buscado pero no encuentro información.
Tambien tengo el mismo problema si pruebo hacerlo con un JDesktopPane, ya que tampoco he encontrado forma de inmovilizar las ventanas internas.
La idea es evitar que el usuario las ande moviendo y las pierda de vista.
Editar/Borrar Mensaje
  #2 (permalink)  
Antiguo 29/05/2009, 12:47
 
Fecha de Ingreso: abril-2009
Mensajes: 82
Antigüedad: 15 años
Puntos: 2
Respuesta: Inmovilizar Ventanas

Buenas:

Sinceramente, no caigo como hacerlo. Pero si consigues ocultar la barra del titulo, no tendrán como moverlo con ratón. ¿Lo has intentado ya?

Saludos.
  #3 (permalink)  
Antiguo 29/05/2009, 17:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 99
Antigüedad: 16 años
Puntos: 1
Respuesta: Inmovilizar Ventanas

No lo he probado, pero no queda bien que pierda las caracteristica la ventana. Lo que quiero evitar es que el usuario la mueva.
  #4 (permalink)  
Antiguo 29/05/2009, 20:56
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Inmovilizar Ventanas

Jamás conocí un soft q no te permita desplazar las ventanas a mi antojo (creo q también es una característica como vos lo mensionas).

pregunta y sugerencia: ¿Con hacer Modal el JDialog no te alcanza?

Última edición por FiruzzZ; 30/05/2009 a las 17:24
  #5 (permalink)  
Antiguo 02/12/2011, 04:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Inmovilizar Ventanas

Cita:
Iniciado por FiruzzZ Ver Mensaje
Jamás conocí un soft q no te permita desplazar las ventanas a mi antojo (creo q también es una característica como vos lo mensionas).

pregunta y sugerencia: ¿Con hacer Modal el JDialog no te alcanza?
Hola:

Soy nuevo en el foro. Sólo escribía porque buscando una solución a este tema no encontré nada "fácil", y después de darle algunas vueltas, dí con una solución que puede ser sencilla y que a mí me sirve. Supongo que habrá alguien en algún sitio que se le haya ocurrido antes, pero no lo he visto. Hay una referencia parecida en http://grupos.emagister.com/debate/fijar_un_jinternalframe/6709-289788.

En mi proyecto me creo una nueva clase que extienda a JInternalFrame, y que sobreescriba el método reshape (creo que también debería funcionar en JFrame, sólo que en este caso el método es heredado de JWindow). Este sería un ejemplo:

import javax.swing.JInternalFrame;

public class TestLockableInternalFrame extends JInternalFrame{
private boolean locked = false;

@Override
public void reshape(int x, int y, int width, int height) {
if (!locked) {
super.reshape(x, y, width, height);
}
}

public boolean isLocked() {
return locked;
}

public void setLocked(boolean locked) {
this.locked = locked;
}
}

Para inmovilizar el frame, lo único que hay que hacer es llamar a la función setLocked(true), y para volver a movilizarlo, llamar a setLocked(false).

OJO! Nunca llamar a setLocked(false) antes de dibujar el Frame, porque si no, no se visualizaría.

Yo por ejemplo en mi aplicación tengo una opción de menú para inmovilizar paneles, que lo que hace es coger todos los jinternalframes que están visibles y hacerles setLocked(false).

La aplicación la estoy haciendo con NetBeans, y esto del reshape lo miré cuando ya tenía todo dibujado, así que para no tener que hacer otra vez todo, lo que he hecho es "customizar" el código de los JInternalFrame y ponerles que se creen como objetos TestLockableInternalFrame.

Y este sería el ejemplo de evento de un botón que me inmoviliza un JInternalFrame:

private void addJButton1ActionPerformed(java.awt.event.ActionEv ent evt) {
TestLockableInternalFrame frame = (TestLockableInternalFrame) JInternalFrame1;
if (frame.isLocked()) {
frame.setLocked(false);
} else {
frame.setLocked(true);
}
}
  #6 (permalink)  
Antiguo 02/12/2011, 04:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Inmovilizar Ventanas

Cita:
Iniciado por jaortega Ver Mensaje
Hola:

Soy nuevo en el foro. Sólo escribía porque buscando una solución a este tema no encontré nada "fácil", y después de darle algunas vueltas, dí con una solución que puede ser sencilla y que a mí me sirve. Supongo que habrá alguien en algún sitio que se le haya ocurrido antes, pero no lo he visto. Hay una referencia parecida en http://grupos.emagister.com/debate/fijar_un_jinternalframe/6709-289788.

En mi proyecto me creo una nueva clase que extienda a JInternalFrame, y que sobreescriba el método reshape (creo que también debería funcionar en JFrame, sólo que en este caso el método es heredado de JWindow). Este sería un ejemplo:

import javax.swing.JInternalFrame;

public class TestLockableInternalFrame extends JInternalFrame{
private boolean locked = false;

@Override
public void reshape(int x, int y, int width, int height) {
if (!locked) {
super.reshape(x, y, width, height);
}
}

public boolean isLocked() {
return locked;
}

public void setLocked(boolean locked) {
this.locked = locked;
}
}

Para inmovilizar el frame, lo único que hay que hacer es llamar a la función setLocked(true), y para volver a movilizarlo, llamar a setLocked(false).

OJO! Nunca llamar a setLocked(false) antes de dibujar el Frame, porque si no, no se visualizaría.

Yo por ejemplo en mi aplicación tengo una opción de menú para inmovilizar paneles, que lo que hace es coger todos los jinternalframes que están visibles y hacerles setLocked(false).

La aplicación la estoy haciendo con NetBeans, y esto del reshape lo miré cuando ya tenía todo dibujado, así que para no tener que hacer otra vez todo, lo que he hecho es "customizar" el código de los JInternalFrame y ponerles que se creen como objetos TestLockableInternalFrame.

Y este sería el ejemplo de evento de un botón que me inmoviliza un JInternalFrame:

private void addJButton1ActionPerformed(java.awt.event.ActionEv ent evt) {
TestLockableInternalFrame frame = (TestLockableInternalFrame) JInternalFrame1;
if (frame.isLocked()) {
frame.setLocked(false);
} else {
frame.setLocked(true);
}
}
En JFrame y JDialog por lo visto lo que habría que sobreescribir sería el método setBounds. Si alguien lee este mensaje y lo prueba, estaría bien que lo indicara, a ver si funciona.
  #7 (permalink)  
Antiguo 16/12/2011, 06:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Inmovilizar Ventanas

El código anterior no sirve cuando la ventana principal, la que contiene el / los internal frame/s puede cambiar de tamaño, porque no se movería / redimensionaría el internal frame adecuadamente. Este código resuelve la papeleta:

import javax.swing.JInternalFrame;

public class TestLockableInternalFrame extends JInternalFrame{
private boolean locked = false;

@Override
public void reshape(int x, int y, int width, int height) {
super.reshape(x, y, width, height);
if (locked) {
revalidate();
}
}

public boolean isLocked() {
return locked;
}

public void setLocked(boolean locked) {
this.locked = locked;
}
}
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 12:57.