On Aug 8, 2012, at 3:11 PM, Chris Wray wrote: > Hi > > I am new to MASON (and this list) and working through the tutorial (student schoolyard cliques) and "tinkering" with the code in a bid to learn how to use MASON, etc, etc. > > The code I have is upto p.41 in the mason manual (so new MovablePortrayal2D, new CircledPortrayal2D, new LabelledPortrayal2D have just been added). > > So the code I am working with resembles the code in this tutorial very much, except that I have made the "students" fixed nodes in the ContinuousPortrayal2D. > I have also made it possible for the students/nodes to be removed (whilst the simulation is paused, etc) whilst selecting/inspecting the individual nodes via the GUI. > > I do the "removing" of nodes by iterating over students.buddies and removing the desired object via .removeNode, and I then .remove the same object from students.yard. > > So far, so good: I run the simulation, pause, select a node, remove it (via boolean inspector property), the display updates, and the edges and node vanish. > > My problem: As soon as I select another "node" in the display, I get a "NullPointerException" with messages: > > > at sim.portrayal.simple.MovablePortrayal2D.handleMouseEvent(MovablePortrayal2D.java:81) > at sim.display.Display2D.handleMouseEvent(Display2D.java:1846) > at sim.display.Display2D$6.mousePressed(Display2D.java:1208) > at java.awt.AWTEventMulticaster.mousePressed(Unknown Source) > at java.awt.Component.processMouseEvent(Unknown Source) > at javax.swing.JComponent.processMouseEvent(Unknown Source) > at java.awt.Component.processEvent(Unknown Source) > at java.awt.Container.processEvent(Unknown Source) > at java.awt.Component.dispatchEventImpl(Unknown Source) > at java.awt.Container.dispatchEventImpl(Unknown Source) > at java.awt.Component.dispatchEvent(Unknown Source) > at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) > at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) > [...] > > I suspect this is because I "removed" an object, whilst it was being "pointed to" (selected in the GUI). > > My question: is there a "good" way to remove objects from the display, and how could I handle an event such as the above? > Many thanks, C.