| |||
Applet despues de minimizar ventana Hola a todos! Tengo un problema con un applet que tengo en una pagina web en aspx. Todo funciona correctamente hasta que minimizo la pagina o pongo una ventana encima del applet, entonces el applet se queda en blanco y no vuelve a arrancar. He leido que el metodo start deberia ejecutarse cuando se vuleve a ver la pagina pero no lo hace. Tengo que decir que el applet esta dentro de un UpdatePanel y cuando presiono alguno de los botones de la pagina lo que hago es hacer UpdatePanel.Update() para que arranque con los nuevos datos que le paso por param actualizados. Espero que alguien pueda ayudarme. |
| |||
Respuesta: Applet despues de minimizar ventana Gracias por contestar. Te voy a poner algo del codigo que tengo hecho ya que es muy largo: public void init() { leo parametros con getParameter } public void start() { if (encendidoOsc.equals("True")) { color=azul_claro; if(timer!=null) timer=null; timer=new Timer(gc); gc.clear(); setBackground(color); setLayout(new BorderLayout()); add("Center",gc); gc.RepresentacionSenales(); } else { color=gris; if(timer!=null) timer=null; gc.clear(); setBackground(color); setLayout(new BorderLayout()); add("Center",gc); gc.repaint(); } } RepresentaciónSenales es una funcion que tengo en la clase canvas, donde según los valores de las variables va pasando por diferentes funciones hasta que se llama a repaint para dibujar el resultado. |
| |||
Respuesta: Applet despues de minimizar ventana Aqui va el metodo paint es un poco largo public void paint(Graphics g) { int i; int cual=0; int cont=almc.almacen.size(); int mBase=288/2; int mAltura=192/2; Graphics2D g2=(Graphics2D)g; g2.setColor(colorlinea); g2.setStroke(new BasicStroke((float)ancho)); for(i=0;i<cont;i++) { if(Osciloscopio.activadoDual.equals("True")&& y==2) {//para que pinte en dos colores if(cual<(cont/2)) { colorlinea=Osciloscopio.colorB; g2.setStroke(new BasicStroke((float)Osciloscopio.AnchoB)); g2.setColor(colorlinea); } else { colorlinea=Osciloscopio.colorA; g2.setStroke(new BasicStroke((float)Osciloscopio.AnchoA)); g2.setColor(colorlinea); } cual++; } lineas obj=(lineas)almc.almacen.elementAt(i); g2.drawLine (obj.x1,obj.y1,obj.x2,obj.y2); } g2.setColor(negro); g2.setStroke(new BasicStroke(0.5f)); for (int k1=24; k1<mBase*2; k1=k1+24) for(int i1 = 0; i1 <mAltura*2; i1=i1+6) { g2.drawLine(mBase-k1,i1,mBase-k1,i1+2); } for (int k1=24; k1<mBase*2; k1=k1+24) for(int i1 = 0; i1 <mAltura*2; i1=i1+6) { g2.drawLine(mBase+k1,i1,mBase+k1,i1+2); } for (int j1=24; j1<mAltura*2; j1=j1+24) for(int m1 = 0; m1 <mBase*2; m1=m1+6) { g2.drawLine(m1,mAltura-j1,m1+2,mAltura-j1); } for (int j1=24; j1<mAltura*2; j1=j1+24) for(int m1 = 0; m1 <mBase*2; m1=m1+6) { g2.drawLine(m1,mAltura+j1,m1+2,mAltura+j1); } /* La distancia es de altura=4.8 y ancho d=6.6 periodico*/ for(double d1 = 4.8; d1 <mAltura*2; d1=d1+4.8) { g2.draw(new Line2D.Double(mBase-d1,mAltura-3,mBase-d1,mAltura+3)); } for(double d1 = 4.8; d1 <mAltura*2; d1=d1+4.8) { g2.draw(new Line2D.Double(mBase+d1,mAltura-3,mBase+d1,mAltura+3)); } for(double p1 = 4.8; p1 <mBase*2; p1=p1+4.8) { g2.draw(new Line2D.Double(mBase-3,mAltura+p1,mBase+3,mAltura+p1)); } for(double p1 = 4.8; p1 <mBase*2; p1=p1+4.8) { g2.draw(new Line2D.Double(mBase-3,mAltura-p1,mBase+3,mAltura-p1)); } g2.drawLine(mBase,0,mBase,mAltura*2); g2.drawLine(0,mAltura,mBase*2,mAltura); } |
| ||||
Respuesta: Applet despues de minimizar ventana Daysy24: Cada vez q minimizas-maximizas el applet ese método paint debería llamarse y pintar todo lo q pusiste ahí. Honestamente, no sé porque no lo hace. Te recomiendo q tomes el código del applet (solamente del applet) y lo corras paso a paso en el eclipse (o tu IDE de java favorito). Ponle puntos de interrupción en todos los métodos de la clase Applet y simula las situaciones q pusiste: minímizalo-maximízalo, pásale una ventana por delante, etc. Verifica q se esté llamando ese método paint y el por qué no está pintando nada. Lamento no ser de más ayuda. saludos; Nup_ |
| |||
Respuesta: Applet despues de minimizar ventana Ya consegui que volviera a pintar tras minimizar la ventana, tuve que poner en la clase Applet el metodo paint que llama al paint de la clase canvas asi: public void paint() { gc.repaint(); } Con esto se soluciona si se minimiza-maximiza o se pone una ventana que tape todo el applet, si solo se tapa parcialmente el trozo de ventana se queda dibujado en el applet. Bueno seguiré investigando. Gracias x todo |
Etiquetas: |