问题
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
}
回答1:
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>");
回答2:
don't to use
MouseListener
orMosueMotionListener
fromJButton
, this method are correctly implemented inJButtons API
,there no reason, I can't found reason to use
repaint()
for this jobanother way is add
ChangeListener
toJButton
and take rellated event(s) from derivedButtonModel
for better help sooner post an SSCCE, short, runnable, compilable, just about
JFrame
with oneJButton
回答3:
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>");
来源:https://stackoverflow.com/questions/14988996/hovering-over-jbuttons-and-displaying-a-message