Re: repaint doesn't work
To: comp.lang.java.gui
The work threads will take some time, okay, we get the point.
I modified as following your code for avoid compile errors.
It works whith 1.2 too; i don't try this code with 1.1.4 (Microsoft
jvm), but my applet works only as demo whith it.
Thank you very much for your help.
Marco
import java.awt.*;
import java.awt.event.*;
class test
{
public static void main(String[]args)
{new window();}
}
class window extends Frame
{
private int max=10;
private void work(write w)
{
long stop=(new java.util.Date()).getTime()+max*1000;
while ((new java.util.Date()).getTime()<stop) {}
}
public window()
{
super();
setSize(100,100);
setLocation(200,200);
Button b=new Button("Push");
done a=new done();
b.addActionListener(a);
add("Center",b);
addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{System.exit(0);}
}
);
setVisible(true);
}
class done implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
removeAll();
final write wait=new write(100,100,"Wait");
add("Center",wait);
wait.repaint();
validate();
repaint();
(new Thread()
{
public void run()
{
work(wait);
EventQueue.invokeLater
(new Runnable()
{
public void run()
{
removeAll();
write done=new write(100,100,"Done");
add("Center",done);
validate();
repaint();
}
}
);
}
}).start();
}
}
}
class write extends Canvas
{
private String phrase;
public boolean done;
public write(int dimx,int dimy,String phrase)
{
super();
setSize(dimx,dimy);
this.phrase=phrase;
done=false;
}
public void paint(Graphics g)
{
g.drawString(phrase,20,30);
done=true;
System.out.println("paint finished: writed "+phrase);
}
}
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24