I want to hover over a number of JButtons on my GUI (map) and display the name of that location eg 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
}
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>");
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
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>");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.