package vtk.sample; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import vtk.AxesActor; import vtk.vtkActor; import vtk.vtkCanvas; import vtk.vtkConeSource; import vtk.vtkNativeLibrary; import vtk.vtkObject; import vtk.vtkPolyDataMapper; import vtk.vtkReferenceInformation; public class VTKCanvas extends JPanel { private static final long serialVersionUID = 1L; // ----------------------------------------------------------------- // Load VTK library and print which library was not properly loaded static { if (!vtkNativeLibrary.LoadAllNativeLibraries()) { for (vtkNativeLibrary lib : vtkNativeLibrary.values()) { if (!lib.IsLoaded()) { System.out.println(lib.GetLibraryName() + " not loaded"); } } } vtkNativeLibrary.DisableOutputWindow(null); } // ----------------------------------------------------------------- public VTKCanvas() { setLayout(new BorderLayout()); // Create the buttons. vtkCanvas renWin = new vtkCanvas(); add(renWin, BorderLayout.CENTER); vtkConeSource cone = new vtkConeSource(); cone.SetResolution(8); vtkPolyDataMapper coneMapper = new vtkPolyDataMapper(); coneMapper.SetInputConnection(cone.GetOutputPort()); vtkActor coneActor = new vtkActor(); coneActor.SetMapper(coneMapper); renWin.GetRenderer().AddActor(coneActor); AxesActor aa = new AxesActor(renWin.GetRenderer()); renWin.GetRenderer().AddActor(aa); } public static void main(String s[]) { VTKCanvas panel = new VTKCanvas(); VTKCanvas panel2 = new VTKCanvas(); JFrame frame = new JFrame("VTK Canvas Test"); frame.getContentPane().setLayout(new GridLayout(2, 1)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(panel); frame.getContentPane().add(panel2); frame.setSize(600, 600); frame.setLocationRelativeTo(null); frame.setVisible(true); vtkReferenceInformation infos = vtkObject.JAVA_OBJECT_MANAGER.gc(true); System.out.println(infos); System.out.println(infos.listRemovedReferenceToString()); System.out.println(infos.listKeptReferenceToString()); } }