[vtkusers] vtk and Java : problem when remove a vtkactor to  avtkrenderer or add avtkrenderer to a vtkrenderwindow
    Jeff Lee 
    jeff at cdnorthamerica.com
       
    Wed Jul  9 08:41:34 EDT 2003
    
    
  
see below...
Romain Ollivier wrote:
>For my viewer, I use the class myVtkPanel wich extends vtkPanel with :
>
>  public void removeActor(vtkProp actor)
>  {
>    Lock();
>    ren.RemoveActor(actor);
>    UnLock();
>  }
>
>  public void addActor(vtkProp actor)
>  {
>    Lock();
>    ren.AddActor(actor);
>    UnLock();
>  }
>
>Then, I have a myVtkJPanel class, wich extends a JPanel, containing this :
>
>........
>  private myVtkPanel view;
>........
>  public void addActor(vtkProp actor)
>  {
>    view.addActor(actor);
>  }
>
>  public void removeActor(vtkProp actor)
>  {
>    view.removeActor(actor);
>  }
>
>
> My viewer use an instance of this JPanel. When I call the addActor() function in my viewer
>constructor, I get this :
>
>Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner
>        at vtk.vtkPanel.UnLock(Native Method)
>        at myVtkPanel.addActor(myVtkPanel.java:33)
>        at myVtkJPanel.addActor(myVtkJPanel.java:82)
>        at myViewer.makeDataPanel(myViewer.java:86)
>        at myViewer.<init>(myViewer.java:62)
>        at myViewer.main(myViewer.java:190)
>
>Do you know what I'm doing wrong when I use Lock() an UnLock() ?
>
tough to say without seeing the whole code, but I'd guess that you are 
trying to add the actor before the drawing surface has been created.  
there is no need to lock in your addActor method anyway - take it out.  
also be careful of doing things like that in a constructor unless you 
are sure that the canvas has gone through its proper initialization.
-Jeff
    
    
More information about the vtkusers
mailing list