On Oct 10, 2006, at 11:40 AM, Maciej M. Latek wrote: > Everything depends on the layout you are using. In most cases, a > straightforward application of any of them to repaint a dynamic > network each > MASON time step will result in display of many intermittent JUNG > steps, > which makes things slower and certainly a lot uglier. If the issue is that JUNG is taking too long to repaint, here's another approach. Let's say that you've inserted into your GUIState's "mini-schedule" a repeating Steppable that looks like this: public class MySteppable extends Steppable { public void step(SimState state) { if (myJungComponent!=null) myJungComponent.repaint(); } } You could set this up to only update within N milliseconds like this: public class MySteppable extends Steppable { Thread timer = null; public void startTimer(final long milliseconds) { if (timer == null) timer= sim.util.Utilities.doLater(milliseconds, new Runnable() { public void run() { if (myJungComponent!=null) myJungComponent.repaint(); timer = null; // reset the timer } }); } public void step(SimState state) { startTimer(100); } } This guarantees that only one repaint will be forced every 100ms. Of course, it also delays your repaint by as much as 100ms -- if you'd like an immediate repaint followed by a 100ms wait, an easy way to do it is to just do a repaint now and a repaint at 100ms later like this: public class MySteppable extends Steppable { long lastRepaint = 0; public void startTimer(final long milliseconds) { if (timer == null) { if (myJungComponent!=null) myJungComponent.repaint(); // repaint now timer= sim.util.Utilities.doLater(milliseconds, new Runnable() { public void run() { if (myJungComponent!=null) myJungComponent.repaint (); // repaint later timer = null; // reset the timer } }); } public void step(SimState state) { startTimer(100); } } Sean