• Domingo 22 de Diciembre de 2024, 22:13

Autor Tema:  Interfaz Gráfica  (Leído 1841 veces)

Misuvija

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Interfaz Gráfica
« en: Martes 5 de Septiembre de 2006, 18:21 »
0
Hola a todos, gracias por tomarse el tiempo de leerme!
Situación:
- Cuento con dos JFrames independientes uno del otro JFrame1 y JFrame2.
- JFrame1 tiene un listener que escucha si JFrame1 cambia de posición o de tamaño.  Si esto sucede JFrame2 deverá comportarse de la misma manera.  No obstante no he logrado mi propósito.

Código:
en JFrame1 se ve:

 void JFrame1_componentMoved(ComponentEvent e) {
    new constructorJFrame2(x, y, width, heidth);
  }

en JFrame2 se ve:
 public constructorJFrame2(int x, int y, int width,int heigth) {
// Se supone actualice las cordenadas y tamaño cada que JFrame1 cambie.
    setBounds(x, y, width, heidth);
}


Alguna ayuda! ;)
Se los agradezco mil!!  

Gracias... Anita.
Any

Misuvija

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Interfaz Gráfica
« Respuesta #1 en: Martes 5 de Septiembre de 2006, 20:59 »
0
Bueno cool a todos lo que se tomaron el tiempo de leer mi mensaje, ya solucioné el problema, hay que declarar static los controles, y así los podrán accesar desde otras clases!, que cool es java!!

Bueno bye ;)
Any

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: Interfaz Gráfica
« Respuesta #2 en: Martes 5 de Septiembre de 2006, 22:07 »
0
un tip nada mas...fijate que estas creando un nuevo objeto cada vez que se mueve un componente:
Código: Text
  1.  
  2. void JFrame1_componentMoved(ComponentEvent e) {
  3. new constructorJFrame2(x, y, width, heidth);
  4. }
  5.  
  6.  
esto es malo malo porque por cada movida estas creando un nuevo JFrame2 en memoria, lo que a la larga puede llevar a desperdiciar muuuucha memoria...

no se muy bien que fue lo que declaraste como static, puede ser que hayas arreglado este codigo, pero si no lo hiciste, te convendria crear una sola vez a tu JFrame2 (por ejemplo, al crear el JFrame1, automaticamente creas el 2) y hacer que el frame1 tenga solamente una referencia a frame2....agregas un metodo (ej. ajustarTamano) en frame2 que haga lo mismo que lo que pusiste en ese constructor (setBounds(x, y, width, heidth);)....y en tu frame1 llamas a ese metodo cuando se mueve un componente, en vez de crear una nueva instancia con el new y llamar al constructor...

no se si me explique bien...sino avisa

Misuvija

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Interfaz Gráfica
« Respuesta #3 en: Martes 5 de Septiembre de 2006, 22:23 »
0
Hola Chimps!, gracia por tomarte el tiempo de contestar, mira te cuento que declaré static el frame1, en primer lugar ;).  Luego te cuento que los ejemplos de código que adjunté fueron muy básicos, para darme a enterder, pero de hecho son medio complejos.  Por dicha los objetos con este método no se instancian 2 o más veces, ya que todos los componentes del frame2 se encuentran instanciados localmente, así que sólamente se instanciarán una vez, en el constructor principal (ya que cuento con varios constructores).

Igual, demasiado bueno que me dieras otra perspectiva como solución al problema, mil gracias!!!  :)  Anita
Any

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: Interfaz Gráfica
« Respuesta #4 en: Miércoles 6 de Septiembre de 2006, 03:10 »
0
no problemou...te comentaba nada mas porque es un tipo de "error" que no te sale en ningun lado y no es tan facil darse cuenta cuando recien estas empezando con java

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Interfaz Gráfica
« Respuesta #5 en: Jueves 7 de Septiembre de 2006, 08:21 »
0
Buenas...

El hecho de declarar cosas como static sin serlo realmente puede tener ciertos efectos negativos en tu código. Remarcar a todos que una variable declarada como static es única para todas las instancias de esa clase.

La opción que tienes es extender JFrame con una clase tuya propia. En esta clase, pasas en el constructor una referencia al otro JFrame, así en ambos. De esta forma, podrás controlar los dos frames sin ningún problema y hacerse referencia el uno al otro sin necesidad de declarar nada static innecesariamente.



Un saludo.

Silverfox.