Posted by
Rasband, Wayne (NIH/NIMH) [E] on
Dec 03, 2015; 6:36pm
URL: http://imagej.273.s1.nabble.com/Problems-with-instance-of-Roi-manager-in-Javascript-tp5015111p5015123.html
> On Dec 3, 2015, at 1:07 AM, Avital Steinberg <
[hidden email]> wrote:
>
> Hi,
> Whenever I try to use an instance of the Roi manager from a function, I get
> a variety of error messages. It's really strange that whenever I run it
> (without changing the code), I get a new and different error message.
> Here's the code:
>
> IJ = IJ();
> rm = RoiManager(); // initiating the ROI manager in hidden mode.
This comment is not correct. You should use
rm = new RoiManager(true);
to create a hidden ROI Manager. If the ROI Manager in not open,
rm = new RoiManager();
opens (displays) the ROI Manager and returns an instance pointing to it. If the ROI Manager is open, it returns an uninitialized RoiManager that throws an exception if you try to add an ROI to it. To use the standard (not hidden) ROI Manager, use
rm = RoiManager.getInstance();
if (rm==null)
rm = new RoiManager();
In most cases, you can use an Overlay instead of a hidden RoiManager. An Overlay is basically an RoiManager without a GUI.
-wayne
> if (rm==null)
> IJ.error("ROI Manager is not found");
> rt = ResultsTable(); // Here, the default is hidden mode.
>
>
> imp = IJ.createImage("Untitled1", "8-bit random", 80, 80, 1);
> imp.setRoi(24,32,20,24);
> rm.addRoi(imp.getRoi());
> doSomething(rm);
>
> function doSomething(rm){
> rm.reset();
> return rm;
> }
>
> And here's the more frequent error message:
>
> Started RoiManagerContext.js at Thu Dec 03 08:01:50 IST 2015
> javax.script.ScriptException:
> sun.org.mozilla.javascript.internal.WrappedException: Wrapped
> java.lang.NullPointerException (/Users/avitalsteinberg/Javascript
> /RoiManagerContext.js#33) in /Users/avitalsteinberg/Javascript
> /RoiManagerContext.js at line number 33
> at
> com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:156)
> at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)
> at org.scijava.script.ScriptModule.run(ScriptModule.java:174)
> at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
> at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
> at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
> at
> org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:191)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
> at java.lang.Thread.run(Thread.java:695)
>
> And here's the error message that appeared the first time I ran it:
>
>
>
> [INFO] Reading IFDs
> [INFO] Populating metadata
> [INFO] Checking comment style
> [WARNING] Expected positive value for PhysicalSizeX; got 0.0
> [WARNING] Expected positive value for PhysicalSizeY; got 0.0
> [WARNING] Expected positive value for PhysicalSizeX; got 0.0
> [WARNING] Expected positive value for PhysicalSizeY; got 0.0
> [INFO] Reading IFDs
> [INFO] Populating metadata
> [INFO] Checking comment style
> Exception in thread "AWT-EventQueue-0"
> java.lang.ArrayIndexOutOfBoundsException: 16 >= 0
> at java.util.Vector.elementAt(Vector.java:427)
> at javax.swing.DefaultListModel.getElementAt(DefaultListModel.java:70)
> at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:186)
> at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:299)
> at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:222)
> at javax.swing.plaf.ComponentUI.update(ComponentUI.java:153)
> at javax.swing.JComponent.paintComponent(JComponent.java:760)
> at javax.swing.JComponent.paint(JComponent.java:1037)
> at javax.swing.JComponent.paintChildren(JComponent.java:870)
> at javax.swing.JComponent.paint(JComponent.java:1046)
> at javax.swing.JViewport.paint(JViewport.java:795)
> at javax.swing.JComponent.paintChildren(JComponent.java:870)
> at javax.swing.JComponent.paint(JComponent.java:1046)
> at javax.swing.JComponent._paintImmediately(JComponent.java:5106)
> at javax.swing.JComponent.paintImmediately(JComponent.java:4890)
> at javax.swing.RepaintManager$3.run(RepaintManager.java:814)
> at javax.swing.RepaintManager$3.run(RepaintManager.java:802)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
> at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:802)
> at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:745)
> at
> javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:725)
> at javax.swing.RepaintManager.access$1000(RepaintManager.java:46)
> at
> javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
> at java.awt.EventQueue.access$400(EventQueue.java:82)
> at java.awt.EventQueue$2.run(EventQueue.java:676)
> at java.awt.EventQueue$2.run(EventQueue.java:674)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> Exception in thread "AWT-EventQueue-0"
> java.lang.ArrayIndexOutOfBoundsException: 16 >= 0
> at java.util.Vector.elementAt(Vector.java:427)
> at javax.swing.DefaultListModel.getElementAt(DefaultListModel.java:70)
> at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:186)
> at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:299)
> at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:222)
> at javax.swing.plaf.ComponentUI.update(ComponentUI.java:153)
> at javax.swing.JComponent.paintComponent(JComponent.java:760)
> at javax.swing.JComponent.paint(JComponent.java:1037)
> at javax.swing.JComponent.paintChildren(JComponent.java:870)
> at javax.swing.JComponent.paint(JComponent.java:1046)
> at javax.swing.JViewport.paint(JViewport.java:795)
> at javax.swing.JComponent.paintChildren(JComponent.java:870)
> at javax.swing.JComponent.paint(JComponent.java:1046)
> at javax.swing.JComponent._paintImmediately(JComponent.java:5106)
> at javax.swing.JComponent.paintImmediately(JComponent.java:4890)
> at javax.swing.RepaintManager$3.run(RepaintManager.java:814)
> at javax.swing.RepaintManager$3.run(RepaintManager.java:802)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
> at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:802)
> at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:745)
> at
> javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:725)
> at javax.swing.RepaintManager.access$1000(RepaintManager.java:46)
> at
> javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
> at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
> at java.awt.EventQueue.access$400(EventQueue.java:82)
> at java.awt.EventQueue$2.run(EventQueue.java:676)
> at java.awt.EventQueue$2.run(EventQueue.java:674)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
> at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
> at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
> at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> [WARNING] Ignoring unsupported output: result
> [sun.org.mozilla.javascript.internal.NativeArray]
> [WARNING] Ignoring unsupported output: result
> [sun.org.mozilla.javascript.internal.NativeArray]
> [WARNING] Ignoring unsupported output: result
> [sun.org.mozilla.javascript.internal.NativeArray]
> [WARNING] Ignoring unsupported output: result [ij.plugin.frame.RoiManager]
>
> Any idea how to solve this bug?
>
> Thanks,
> Avital
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html