Ooops, forgot to dispose of the Graphics object when the call to
getGraphics() was made.
Make sure the line "g.dispose" is in your code.
-Chinh
Chinh Tang wrote:
> Hi all,
> I thought it would be nice if I share my version of a Tooltip that can
> be used on a layer. The CustomToolTip listed at the bottom is a simple
> JWindow and can be modified to contain any Component or JComponent and
> can be used pretty much anywhere.
>
> Have fun customizing it,
> -Chinh
>
> This is how you would use it on a layer that is listening to a
> mouseMove():
>
> CustomToolTip customToolTip = new CustomToolTip();
> public void mouseMoved(MouseEvent e)
> {
> Point pt = e.getPoint();
> //somehow in your implementation, get the OMGraphicList
> OMGraphicList graphicList = getOMGraphicList();
> //find the node at this point
> OMGraphic om = graphicList.findClosest(pt.x,pt.y,2);
>
> if (om!=null)
> customToolTip.showAt(om.getAppObject().toString(), this,
> ptMouse.x,ptMouse.y);
> else
> customToolTip.setVisible(false);
> }
>
>
>
>
> /**////////////////////////////////////////////////////////////////////////////////////////////////////////
>
> * tooltip that can be used anywhere
> **/////////////////////////////////////////////////////////////////////////////////////////////////////////
>
> public class CustomToolTip extends JWindow
> {
> JLabel label = new JLabel("");
> public CustomToolTip()
> {
> this.setVisible(false);
> Container con = this.getContentPane();
> con.add(label);
> label.setBorder(BorderFactory.createRaisedBevelBorder());
> con.setBackground(Color.yellow.brighter().brighter());
> con.setForeground(Color.black);
> label.setOpaque(false);
> }
>
> private static Frame getFrame(Component c)
> {
> Component w = c;
> while(!(w instanceof Frame) && (w!=null)) {
> w = w.getParent();
> }
> return (Frame)w;
> }
>
> public void showAt(String s, Component invoker, int x, int y)
> {
> int width=100, int height=30;
> label.setText(s);
> if (invoker != null)
> {
> Point invokerOrigin = invoker.getLocationOnScreen();
> x += invokerOrigin.x;
> y += invokerOrigin.y;
> Frame frame = getFrame(invoker);
> Graphics g = frame.getGraphics();
> Rectangle2D rec = g.getFontMetrics().getStringBounds(s,g);
g.dispose();
>
> width = rec.getWidth();
> height = rec.getHeight();
> }
> this.setBounds(x+15,y+15,width+7, height+7);
> this.setVisible(true);
> this.toFront();
> }
> }
>
>
-- [To unsubscribe to this list send an email to "majdart@bbn.com" with the following text in the BODY of the message "unsubscribe openmap-users"]Received on Thu Jul 18 11:27:51 2002
This archive was generated by hypermail 2.1.8 : Thu May 12 2005 - 07:18:33 EDT