Reputation: 385
I want to hover over a number of JButtons on my GUI (map) and display the name of that location e.g. Manchester and London. I have the code working for one button, but it does not work for more than one button and prints the last out
message (as i have 10 buttons) for all button locations.
If button1
is true it then draws the text on the GUI in the specified area via my paintComponent()
method.
How can i resolve this?
button1.addMouseMotionListener(this);
button2.addMouseMotionListener(this);
public void mouseMoved(MouseEvent arg0)
{
if(button1.contains(arg0.getPoint()))
{
button1 = true;
out = "test 1";
repaint();
}
if(!button1.contains(arg0.getPoint()))
{
b1 = false;
out = " ";
repaint();
}//same for all 10 buttons but change variables
}
Upvotes: 4
Views: 21743
Reputation: 31
Well this answer is coolio for JDK 8 users, so try it out:
for regular text
buttonyoumade.setToolTipText("Text you choose");
for html use
anotherbuttonyoumade.setToolTipText("<html> any valid html code </html>");
Upvotes: 3
Reputation: 347194
Why not use the tool tip API that already exists?
button.setTooltip("Manchester");
You even use HTML text to produce formatted results.
button.setTooltip("<html>Manchester<br>53.4800° N, 2.2400° W</html>");
If the images are embedded, you can even supply an image...
button.setTooltip("<html><img src=" + getClass().getResource("/someimage") + "/>Manchester<br>53.4800° N, 2.2400° W</html>");
Upvotes: 13
Reputation: 109813
don't to use MouseListener
or MosueMotionListener
from JButton
, this method are correctly implemented in JButtons API
,
there no reason, I can't found reason to use repaint()
for this job
another way is add ChangeListener
to JButton
and take rellated event(s) from derived ButtonModel
for better help sooner post an SSCCE, short, runnable, compilable, just about JFrame
with one JButton
Upvotes: 3