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

Actualizar una imagen (Image) pintada en un JFrame

Estas en el tema de Actualizar una imagen (Image) pintada en un JFrame en el foro de Java en Foros del Web. Hola! les agradecería mucha su ayuda, me he matado de googlear y buscarle pero no encuentro la solución. No quiero decir que llevo días buscando ...
  #1 (permalink)  
Antiguo 02/01/2009, 12:18
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Actualizar una imagen (Image) pintada en un JFrame

Hola! les agradecería mucha su ayuda, me he matado de googlear y buscarle pero no encuentro la solución. No quiero decir que llevo días buscando =(

ok. tengo una clase llamada Esquema, esta clase se encarga de pintar un grafo (automáta finito) en un JFrame . Pero mi problema es : cada que cambio los datos del grafo y le pidó que pinte y despliegue el nuevo grafo, me muestra el anterior. O sea que la primera vez que corro mi programa si me genera el grafo y me lo pinta, pero cuando ingreso nuevos datos a través de otra ventana y le pido que me lo pinte me pinta el anterior, no me actualiza.

Si me genera el archivo gif pero me sigue pintando el primero que ingresé

mi codigo de la clase Esquema:

Código PHP:
package izt.uam.mx.esquema;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.io.File;

import javax.swing.JFrame;

public class 
Esquema extends JFrame {

    private static final 
long serialVersionUID 1L;
    
    private 
Image esquema;
    
    
String funciont[][];
    
String estadosfinales[];

    
/**
     * This is the default constructor
     */
    
    
    
    
public Esquema(String funcionTransicion[][],String estadosFinales[],String NombreArchivo,String tituloVentana){
        
super();
        
funciont funcionTransicion;
        
estadosfinales estadosFinales;    
        
esquemathis.getEsquema(NombreArchivo);
        
int Ancho esquema.getWidth(this)+9;
        
int Alto esquema.getHeight(this)+36;    
        
this.setSize(Ancho,Alto);
        
this.setTitle(tituloVentana);
        
this.setVisible(true);
        
this.repaint();
        
        
        
    }
    
    
//me regresa una cadena de los estados Finales 
    //con el siguiente formato: "estados1 estado2 estadoi-1 estadoi"
    
private String getCadenaEstFinales(){
        
String estadosF="";
        for(
int i=0;i<estadosfinales.length;i++){
            if(
i!=estadosfinales.length-1){
                
estadosFestadosF+estadosfinales[i]+" ";
            }
            else
                
estadosF=estadosF+estadosfinales[i];
        }
        
        return 
estadosF;
    }
    
/*me genera un Image con el dibujo generado por el GraphViz*/
    
private Image getEsquema(String NombreArchivo){
        
String estadosFinalesgetCadenaEstFinales();
        
Image esquemita=null;
        
        
GraphViz gv= new GraphViz();
        
gv.addln(gv.start_graph());
        
gv.addln("rankdir=LR;");
        
gv.addln("size=\"8,5\"");
        
gv.addln("node[shape=doublecircle]; "+estadosFinales+";");
        
gv.addln("node[shape = circle];");
        
        for(
int i=0;i<funciont.length;i++){
        
gv.add(""+funciont[i][0]+" -> "+funciont[i][2]+" ");/*Estoy suponiendo que los 2 primeros elementos de funcionT 

son q0*/
        
gv.addln("[label = \""+funciont[i][1]+"\"];");
        }
        
        
gv.addln(gv.end_graph());
        
System.out.println(gv.getDotSource());
        
        
File out = new File(NombreArchivo+".gif");
        
gv.writeGraphToFile(gv.getGraph(gv.getDotSource()), out);
        
        
esquemita Toolkit.getDefaultToolkit().getImageNombreArchivo+".gif");
        
        
MediaTracker tracker = new MediaTrackerthis );
        
// Se añaden las imágenes a la lista del tracker
        
tracker.addImageesquemita,);
        
        try{
          
// Se bloquea la tarea durante el tiempo necesario para la carga
          // de todas las imágenes
          
tracker.waitForAll();
        } catch( 
InterruptedException e ) {
          
System.out.println);
          }
        
        
out.delete();

        return 
esquemita;
    }
    
    

    public 
void paint(Graphics g){
        
        
g.drawImage(esquema0+this.getInsets().left0+this.getInsets().topthis);
        
    }
    
    
    

    


Bueno yo tengo tres clases que interactuan de la siguiente manera:

Interfaz Ventana ----------------->NegocioP1 --------------> Esquema



Voy a explicar como es que llamo a la clase Esquema. a lo mejor también por ahi esta el problema.

En la clase Interfaz tengo un Boton "Despliega Esquema" le aplico un actionlistener y mando a llamar a un método parecido a este:

Código PHP:
private void despliegaEsquemaM(){
        
        
VOAFD automataM=negocioP1.getAutomataM();
        
negocioP1.muestraEsquema(automataM,"ent","Esquema M");            
        
        
        
    } 
y en mi Clase NegocioP1 , tiene un metódo para llamar a Esquema:

Código PHP:
public Esquema muestraEsquema(VOAFD automata,String NombreArchivo,String tituloVentana){
        
String funcionTransicion[][]= automata.dameArrayFuncionTransicion();
        
String estadosFinales[]=automata.dameArrayEstadosFinales();
        return new 
Esquema(funcionTransicion,estadosFinales,NombreArchivo,tituloVentana);
        
    } 

Última edición por chayross; 02/01/2009 a las 12:37 Razón: colocar mas informacion relevante al tema
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 03:02.