Programación General > Java
Interfaz Gráfica
Misuvija:
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.
Misuvija:
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 ;)
chimps:
un tip nada mas...fijate que estas creando un nuevo objeto cada vez que se mueve un componente:
--- Código: Text --- void JFrame1_componentMoved(ComponentEvent e) {new constructorJFrame2(x, y, width, heidth);} 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:
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
chimps:
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
Navegación
[#] Página Siguiente
Ir a la versión completa