[vtkusers] JFrame and vtkRenderWindow Panel InfoVis

Bladek, Anthony Anthony.Bladek at pnl.gov
Wed Mar 31 14:09:49 EDT 2010


Thanks again.  I found those examples just after I wrote so I apologize for jumping the gun.  I followed the examples and got the JFrame and the Panel showing up just fine but there is no graph in the panel.   I just get the background image. I have tried the various ways that I have seen from the various examples (vtkRenderWindowPanel directly inside a JFrame,  vtkRenderWindowPanel inside a JPanel, which is inside a JFrame) but I still only get a background image.  The only difference I can see is that for this early test I did not create a class that extends JFrame. I just instantiated a JFrame directly in my main program.  I also only have one panel, neither of which should make a difference (I would think.)

My JFrame also refuses to close when the red X is clicked which I also don't understand but am ignoring assuming it is related to the fact I can't see my tree/graph. 

Any help pointing out my problem would be greatly appreciated.

Code below

//snip
Input to graphView is the output from GroupLeafVertices and worked just fine when displaying a vtkGraphLayoutView directly

		vtkGraphLayoutView graphView = new vtkGraphLayoutView();
		graphView.AddRepresentationFromInputConnection(vertices1.GetOutputPort()); 
		vtkRenderWindowPanel panel = new vtkRenderWindowPanel(graphView.GetRenderWindow());
		// configure the graphView	
		graphView.SetVertexLabelArrayName("Destination");
		graphView.SetEdgeLabelArrayName("Session Count");
		graphView.SetVertexLabelFontSize(14);
		graphView.VertexLabelVisibilityOn();
		graphView.SetEdgeLabelVisibility(true); 
		graphView.SetLayoutStrategyToCommunity2D();
		graphView.SetEdgeColorArrayName("Session Count"); 
		graphView.ColorEdgesOn(); 	
		graphView.ResetCamera();
	
		// set the size and background of the vtkRenderWindowPanel
		panel.setSize(600,600);
		panel.GetRenderer().SetBackground(0.8,0.8,0.8); 
		// get the JFrame
		final JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// set up in the interior JPanel
		JPanel mainPanel = new JPanel(); 
		mainPanel.setSize(600,600); 
		mainPanel.setBackground(Color.white);
		mainPanel.add(panel); 
		mainPanel.setVisible(true);
		

		frame.getContentPane().add("Center", mainPanel); 
		frame.setTitle("Test Tree"); 
		frame.getContentPane().setVisible(true);
		graphView.Update();
		panel.Render();
		graphView.ResetCamera(); 
	 	graphView.Render();
		frame.pack();
		frame.setVisible(true); 
		
		
		frame.addWindowListener(new WindowAdapter() {
		      @Override
		      public void windowClosing(WindowEvent e) {
		        // Calling vtkGlobalJavaHash.DeleteAll() will clean up
		        // VTK references before the Java program exits.
		        vtkGlobalJavaHash.DeleteAll();
		        frame.dispose(); 
		        System.exit(0); 
		      }
		    });
}

//end snip....
-----Original Message-----
From: Jeff Baumes [mailto:jeff.baumes at kitware.com] 
Sent: Wednesday, March 31, 2010 7:06 AM
To: Bladek, Anthony
Cc: vtkusers at vtk.org
Subject: Re: [vtkusers] Titan and graph/tree Infoviz

Take a look at the examples in

VTK-git/Examples/Infovis/Java

Jeff

On Tue, Mar 30, 2010 at 6:36 PM, Bladek, Anthony <Anthony.Bladek at pnl.gov> wrote:
> Jeff,
>  Thanks for the help.  That worked great.  Now I have several other questions, if you don't mind.  Is it possible to display a graph in a vtkPanel?  I've got some great views using vtkGraphLayoutView but I need to integrate them along with some other components into an application and I can't find an example with vtkPanel that doesn't just add an image or shape to a panel. Do I need to use another method to display my graph in a vtkPanel? (vtkGraphToPolyData?)
>
> Along those same lines, I have also read that vtkPanel wrapper has some bugs which make the SWING applications they are in crash during interaction. As far as I can tell from the users group, they are in the process of fixing them.
>
> On the other hand, I don't see any wrappers (or at least it is not in my vtk.jar) for the QT to VTK methods. Are there any and I just didn't check the right box in CMake?  If they exist, I thought I could use Jambi (QT in java) to get my interface up and running.
>
> I guess the bottom-line is what do recommend for integrating vtk and java into a real application with multiple controls and panels as opposed to just creating a graph and interacting with it in a single view (which is what I have done so far)?
>
> Thanks...
>
> Anthony
>
>
>
> -----Original Message-----
> From: Jeff Baumes [mailto:jeff.baumes at kitware.com]
> Sent: Saturday, March 27, 2010 4:26 PM
> To: Bladek, Anthony
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] Titan and graph/tree Infoviz
>
> Try adding the lines
>
> reader.OutputPedigreeIdsOn();
> reader.GeneratePedigreeIdsOn();
>
> This will add pedigree ids to your table, and the error should go
> away. GroupLeafVertices needs an array with ids in it to help in
> bookkeeping.
>
> Jeff
>
> On Fri, Mar 26, 2010 at 4:36 PM, Bladek, Anthony <Anthony.Bladek at pnl.gov> wrote:
>> All,
>>     I am a new to vtk and the Titan extensions I am having trouble producing
>> a tree visualization.  Specifically, I am trying to use vtkGroupLeafVertices
>> based upon a table of data.  Much like the example shown in the slides from
>> Information_Visualization_in_VTK.ppt  (A Titan presentation) I have 3
>> columns in a table and I want the first level of the tree (past the root) to
>> be drawn from one column of the table and the next level to be drawn from
>> another column. As far as I can find there are no examples on how to set up
>> and use vtkGroupLeafVertices so I am at a bit of loss on how to start.    I
>> am using the java wrappers for VTK and here is what I have so far.
>>
>> //snip
>>                 // read in the csv file
>>                 vtkDelimitedTextReader reader = new
>> vtkDelimitedTextReader();
>>                 reader.DetectNumericColumnsOn();
>>                 reader.SetFieldDelimiterCharacters(",");
>>                 reader.SetFileName(OutputConnectionCountGraphCSVFileName);
>>                 reader.SetHaveHeaders(true);
>>                 reader.Update();
>>
>>                 // create a table
>>                 vtkTable table = reader.GetOutput();
>>                 int numCols = table.GetNumberOfColumns();
>>                 System.out.println("number of columns: " + numCols);
>>                 // turn it into a tree
>>                 vtkTableToTreeFilter treeFilter = new
>> vtkTableToTreeFilter();
>>                 treeFilter.SetInputConnection(reader.GetOutputPort());
>>                 treeFilter.Update();
>>                 vtkTree tree = new vtkTree();
>>                 tree = treeFilter.GetOutput();
>>
>>                 int vertCount = tree.GetNumberOfVertices();
>>                 int edgeCount = tree.GetNumberOfEdges();
>>
>>                 // group the vertices here
>>                 //don't have actually any idea how to set this up.
>>                 // code below produces error "Pedigree ids not assigned to
>> vertices on input graph."
>>                 // must be missing something.
>>                 vtkGroupLeafVertices vertices = new
>> vtk.vtkGroupLeafVertices();
>>                 vertices.SetInputConnection(treeFilter.GetOutputPort());
>> //input the tree
>>                 vertices.SetInputArrayToProcess(0,0,0,0, "Session
>> Count");//group by number of connections
>>                 vertices.SetInputArrayToProcess(1,0,0,0, "Source"); // then
>> by source
>>                 vertices.SetInputArrayToProcess(1,0,0,0, "Destination");
>> then by destination
>>                 vertices.Update();
>>
>>                 //.. Put the vertices into the layout or view or ??
>> // end snip
>>
>>         Any help or any example to follow would be greatly appreciated.
>>
>>         Thanks.
>>
>>         Anthony
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>>
>



More information about the vtkusers mailing list