Re: how to use ToolTip' functions on a Graphics area?
On 8 jun, 17:07, "John B. Matthews" <nos...@nospam.invalid> wrote:
In article
<21058638-43a9-4759-9c50-32c3e46ba...@k2g2000yql.googlegroups.com>,
Vinicius Pereira <viniciusdenov...@gmail.com> wrote:
On 8 jun, 14:16, "John B. Matthews" <nos...@nospam.invalid> wrote:
In article
<bcd1c115-f525-4792-a8e5-260a3d362...@t21g2000yqi.googlegroups.com>,
Vinicius Pereira <viniciusdenov...@gmail.com> wrote:
[...]
Thanks John B. Matthews
Yes, that was what I think, but I was looking for a way to use these
ToolTip's functions of these packages. I think that if use these
functions, my program will be more resourceful. But I can make it
manually.
My principal goal, is that my ToolTip look like this on of this site:
http://faculty.salisbury.edu/~despickler/pascgalois/Zn.html
In the applet on this site, press the button of "refresh" in the
right- superior corner. The applet will show a colour figure of
Pascal's Triangle. Then put the mouse's cursor on the triangle and
then appear a "tip" on the side of the cursor. In the tip, appear the
coefficient number of the cell of the triangle which the cursor is.
As Knute Johnson's example in this thread shows, JComponents have that
functionality already. Your example appears to be a JButton, which is
also a JComponent. Here's an example of a custom "tip" that follows the
mouse:
<code>
package gui;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TipTest extends JPanel {
private static Color hiliteColor = new Color(0xFFFFC0);
private static Font font = new Font("SansSerif", Font.PLAIN, 12=
);
private FontRenderContext frc =
new FontRenderContext(null, false, false);
private Point pt = new Point(Short.MAX_VALUE, Short.MAX_VALUE);
public TipTest() {
setPreferredSize(new Dimension(320, 240));
this.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
pt.setLocation(e.getX(), e.getY());
TipTest.this.repaint();
}
});
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
g.setColor(Color.lightGray);
g.fillRect(0, 0, getWidth(), getHeight());
String s = pt.x + "," + pt.y;
Rectangle2D.Float r = (Rectangle2D.Float)
font.getStringBounds(s, frc);
r.setRect(r.x + pt.x - 3d, r.y + pt.y - 2d,
r.width + 6d, r.height + 4d);
g2D.setPaint(hiliteColor);
g2D.fill(r);
TextLayout layout = new TextLayout(s, font, frc);
g2D.setPaint(Color.black);
layout.draw(g2D, (float) pt.x, (float) pt.y);
g2D.setPaint(Color.blue);
g2D.draw(r);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON=
_CLOSE);
f.add(new TipTest(), BorderLayout.CENTER)=
;
f.pack();
f.setVisible(true);
}
});
}}
</code>
--
John B. Matthews, Knute Johnson.
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
Thanks
I guess it's better do it manually, like the code above.
Thanks John B. Matthews.
Thanks Knute Johnson.
Thanks for the help.