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 all, Tom Whittaker wrote: > > Well, I could be wrong, but...since your VisADCanvasJ3D 'canvas' extends > java.awt.Canvas (a few levels deep...), it might work the same way: when > you get the graphics context for the Canvas and drawString() onto it, you > may trigger a call to that Canvas' paint() method...which just might > obliterate whatever you just drew into it. > > Perhaps a different approach would be to imbed the VisAD Display into your > own frame, leaving some room for a label inside the frame. Using the same > background color would give the effect of being part of the Display, and > have the added benefit of not getting blocked out by any of the VisAD > 'box' contents. That's what exactly what I do and it looks fine. Use a BorderLayout, put, the display in the CENTER, put a JLabel or, even better, a JTextField (as it is editable) at NORTH. It saves one from having to deal with all that DataReference stuff and from having to use code to draw non-rotating text. Not to mention this trouble with drawString() onto some Canvas. As Tom says, the only drawback is the back/foreground color. When changing the display color, you have to remember to tell you computer to do the same for the JLabel/JTextField. Another little problem is when saving the display as a JPG. you can't "captureDisplay()" anymore, but have to write your own code do do so. Which isn't difficult. Let us know in case you want more details. Cheers, Ugo
visad
archives: