<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>RE: [vtkusers] Java -how to remove an actor from a vtkpanel? </TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>

<P><FONT SIZE=2>Hello,<BR>
<BR>
Hmmm I didnīt have any problems doing the following in my app:<BR>
<BR>
renWin.GetRenderer().RemoveActor(aActor);<BR>
renWin.GetRenderer().ResetCamera();<BR>
renWin.GetRenderer().AddActor(aActor);<BR>
renWin.GetRenderer().ResetCamera();<BR>
<BR>
but renWin is a vtkCanvas rather than a vtkPanel.<BR>
<BR>
so try using ResetCamera rather than rePaint(). You could also<BR>
try an Update somewhere but for me going through java that<BR>
would sometimes crash the jvm.<BR>
<BR>
Also if you have 0 actors in the scene then no rendering is<BR>
done.<BR>
<BR>
bye,<BR>
<BR>
Henrik<BR>
<BR>
-----Original Message-----<BR>
From: vtkusers-bounces+henrik.westerberg=crg.es@vtk.org on behalf of Stephen<BR>
Sent: Wed 8/15/2007 11:18 PM<BR>
Cc: vtkusers@vtk.org<BR>
Subject: [vtkusers] Java -how to remove an actor from a vtkpanel?<BR>
<BR>
Dear all.<BR>
<BR>
Please see the code below. I am trying to add/remove actors to a<BR>
vtkpanel. I find that although the number actors will<BR>
increment/decrement, the view will not refresh unless I bring another<BR>
window in front of it?<BR>
<BR>
I feel I must be doing something silly, I hope someone can point me in<BR>
the right direction, so far I have not found any resources to illustrate<BR>
actor removal in Java.<BR>
<BR>
many thanks<BR>
<BR>
Stephen<BR>
<BR>
import java.awt.*;<BR>
import java.awt.event.*;<BR>
import javax.swing.*;<BR>
import vtk.*;<BR>
<BR>
<BR>
public class TestAddRemoveActor extends JPanel implements ActionListener {<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp; static JFrame frame;<BR>
&nbsp;&nbsp;&nbsp;&nbsp; vtkPanel renWin;<BR>
&nbsp;&nbsp;&nbsp;&nbsp; JButton removeActors;<BR>
&nbsp;&nbsp;&nbsp;&nbsp; JButton addActors;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp; vtkActor coneActor = new vtkActor();<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp; static {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.loadLibrary(&quot;vtkCommonJava&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.loadLibrary(&quot;vtkRenderingJava&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp; public TestAddRemoveActor() {<BR>
&nbsp;&nbsp;&nbsp;&nbsp; setLayout(new BorderLayout());<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin = new vtkPanel();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkConeSource cone = new vtkConeSource();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cone.SetResolution(60);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coneMapper.SetInput(cone.GetOutput());<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coneActor.SetMapper(coneMapper);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.GetRenderer().AddActor(coneActor);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeActors = new JButton(&quot;Remove&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeActors.addActionListener(this);<BR>
&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addActors&nbsp;&nbsp;&nbsp; = new JButton(&quot;Add actor&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addActors.addActionListener( this );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(renWin, BorderLayout.CENTER);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(removeActors, BorderLayout.NORTH);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(addActors, BorderLayout.SOUTH);<BR>
&nbsp;&nbsp; }<BR>
<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp; public void actionPerformed(ActionEvent e)<BR>
&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.getSource().equals(addActors)){<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.GetRenderer().Clear();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkConeSource cone = new vtkConeSource();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cone.SetResolution(60);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coneMapper.SetInput(cone.GetOutput());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coneActor = new vtkActor();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coneActor.SetMapper(coneMapper);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.repaint();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.GetRenderer().AddActor(coneActor);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(<BR>
renWin.GetRenderer().GetActors().GetNumberOfItems() );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.GetRenderer().RemoveActor( coneActor );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renWin.repaint();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(<BR>
renWin.GetRenderer().GetActors().GetNumberOfItems() );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;<BR>
<BR>
&nbsp;&nbsp; public static void main(String s[])<BR>
&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestAddRemoveActor panel = new TestAddRemoveActor();<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame = new JFrame(&quot;TestMemoryLeak&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.addWindowListener(new WindowAdapter()<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void windowClosing(WindowEvent e) {System.exit(0);}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.getContentPane().add(&quot;Center&quot;, panel);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.pack();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.setVisible(true);<BR>
&nbsp;&nbsp;&nbsp; }<BR>
}<BR>
<BR>
_______________________________________________<BR>
This is the private VTK discussion list.<BR>
Please keep messages on-topic. Check the FAQ at: <A HREF="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</A><BR>
Follow this link to subscribe/unsubscribe:<BR>
<A HREF="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</A><BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>