NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Adele,Have a look at this web page, in particular *"5. How do I use Canvas3D's in JTabbedPane?*" at http://www.j3d.org/faq/swing.html.
I have just added the changes to DisplayPanelJ3D and made a small change to your test program, which fixes the TabbedPane problem.
The change to DisplayPanelJ3D is the same as outlined on the j3d web page.The change to your test is that HeatPlot.getPanel() returns display.getComponent() instead of a JPanel with the display.getComponent() added to it.
To test for yourself make the following directories under your test program directory
visad_mods\visad\java3d\DisplayPanelJ3D.java and run the following set classpath=.;visad_mods\;visad.jar; javac visad_mods\visad\java3d\DisplayPanelJ3D.java java test from the directory you have test.java It works on my computer. If you have any problems let me know. Good luck. Luke. --- Luke Matthews Bureau of Meteorology, Australia l.matthews *AT* bom.gov.au Curtis Rueden wrote:
Hi Adele, I am not certain what is causing the tabbed pane to behave strangely. I wonder whether Java3D in general has issues with JTabbedPane, or just VisAD. In any case, here is an ugly hack that solves your problem for now: SwingUtilities.invokeLater(new Runnable() { public void run() { for (int i=tabbedPane.getTabCount()-1; i>=0; i--) { tabbedPane.setSelectedIndex(i); tabbedPane.validate(); } } }); Put this code *after* frame.setVisible(true). You'll also need to make the tabbedPane declaration final. As for the issue with data extending beyond the bounding box, you can clip that away. The following code attached to your Heatplot displays will clip the data to inside the bounding box only: DisplayRendererJ3D dr = (DisplayRendererJ3D) display.getDisplayRenderer(); dr.setClip(0, true, 1.0f, 0.0f, 0.0f, -1.01f); // X_POS face dr.setClip(1, true, -1.0f, 0.0f, 0.0f, -1.01f); // X_NEG face dr.setClip(2, true, 0.0f, 1.0f, 0.0f, -1.01f); // Y_POS face dr.setClip(3, true, 0.0f, -1.0f, 0.0f, -1.01f); // Y_NEG face dr.setClip(4, true, 0.0f, 0.0f, 1.0f, -1.01f); // Z_POS face dr.setClip(5, true, 0.0f, 0.0f, -1.0f, -1.01f); // Z_NEG face Hope that helps. -Curtis At 02:50 PM 2/2/2004, Adele Cutler wrote:Hi, I'm using visad from the current visad.jar file, with j2sdk1.4.1_02 and java3d-1_3_1-windows-i586-opengl-sdk. I'm having 2 difficulties with which I would appreciate help/advice. 1. When I set up a tabbed pane, only the last-added tab is shown, even when I use setSelectedIndex: JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("pane1", pane1); tabbedPane.addTab("pane2", pane2); tabbedPane.addTab("pane3", pane3); tabbedPane.addTab("pane4", pane4); int is = tabbedPane.indexOfTab("pane1"); tabbedPane.setSelectedIndex(is); pane4 is the one I see. If I click on the pane4 tab, I can then click on the first 3 tabs and see the correct images. I did read the tabbed pane postings on the visad archive, which seemed to say the tabbed pane problem was solved - I'm sorry, but I don't understand the details of those postings well enough to fix my code. Can anyone help? 2. In a simple 2D plot, the image plots outside the axes (I also have an older version of visAD, dated about a year ago, and this does not happen with that version). Both of these can be seen in a simplified version of my app, which I have attached. Thanks for any help you can provide. Adele
visad
archives: