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

Duda con eventos de componentes que se agregan a un JTextPane

Estas en el tema de Duda con eventos de componentes que se agregan a un JTextPane en el foro de Java en Foros del Web. hola a todos, he encontrado un componente muy útil para el tipo de programa que estoy haciendo y es el JTextPane, Acláro que estoy utilizando ...
  #1 (permalink)  
Antiguo 29/04/2011, 12:06
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Duda con eventos de componentes que se agregan a un JTextPane

hola a todos, he encontrado un componente muy útil para el tipo de programa que estoy haciendo y es el JTextPane, Acláro que estoy utilizando Netbeans.

Pero tengo una pequeña duda: (es que en cierta parte del programa estoy agregando un Jpanel en tiempo de ejecución a un determinado JTextPane...

ese Jpanel en realidad es una subclase de JPanel y le puse componentes y en varios de estos componentes les programé el evento "Oprimir(ActionPerformed)"... y en este evento programé que se actualizara el contenido del JTextPane..aja el mismo JTextPane donde está el Jpanel que tiene el componente que ejecuta este evento.
ojala me entiendan, ¿mi duda es que pasa con todos esos recursos que utilizan los JPanel que pasan por el JTextPane, se liberan?

y otra duda miren mas o menos una versión simplificada del código que mencioné:


aquí esta la clase que actualiza el JTextPane y pues solo muestro un método y un constructor:

Código PHP:

public class AdministraContenido{

public 
Contenido(JTextPane contenedor){
    
this.contenedor contenedor;
    }

 public 
void AgregaComponente(Component c){
    
contenedor.setText("");//borro al objeto:"PanelAInsertar" que esta visible  actualmente
    
contenedor.setCaretPosition(contenedor.getStyledDocument().getLength());
    
contenedor.insertComponent((JPanel)c);
    
contenedor.setCaretPosition(1);
    }


Aquí la subclase que extiende al JPanel que define lo objetos que mas adelante se insertarán en un JTextPane

Código PHP:
public class PanelAInsertar extends JPanel{

private 
JTextPane miContenedor;

//por acá supongan código generado por netbeans para los componentes

//Constructor en donde pido una referencia al JTextPane donde se va insertar este //JPanel
public PanelAInsertar(JTextPane miContenedor){

this.miContenedor=miContenedor;
}

//evento de un JButton
private void JButtonActualizarActionPerformed(java.awt.event.ActionEvent evt){

//utilizo a objeto "AdministraContenido"

new AdministraContenido(miContenedor).AgregaComponente(new 
PanelAInsertar(miContenedor));


// por acá realizo otra instrucción

}





y finalmente Aquí la clase que empieza todo:

Código PHP:
public class AgregaContenido extends JFrame{

// por acá supongan que ya he hecho gráficamente un JTextPane  llamado: //"objJTextPane"

public void AgregaJPanel(){
new 
AdministraContenido(objJTextPane).AgregaComponente(new 
PanelAInsertar(objJTextPane));
}



es facil saber cuando se liberan los recursos de una variable primitiva, pues con
dejarse de referenciar es suficiente.

pero acá ¿se están liberando los recursos de cada JPanel que se retira del JTextPane?

como ven en un momento dado un objeto gráfico: "PanelAInsertar" deja de ser visible en el JTextPane pero sigue ejecutando las instrucciones que pertenecen a un evento de uno de sus componentes.. entonces ¿si se esta eliminando ese objeto: "PanelAInsertar"?

¿o se eliminan cuando se termina de ejecutar todas las instrucciones de los eventos de sus componentes?

¿si es recomendable programar así?

agradezco al que me ayude con alguna de estas dudas, me preocupa que mi aplicación
solo empiece a ocupar y ocupar memoria con objetos gráficos no visibles o algo por el estilo jeje...saludos...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 18/06/2011 a las 20:29

Etiquetas: componentes, eventos, jtextpane
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




La zona horaria es GMT -6. Ahora son las 15:51.