Наведите курсор на JButtons и отобразите сообщение
Я хочу навести курсор на несколько кнопок J на моем графическом интерфейсе (карте) и отобразить название этого местоположения, например, Манчестер и Лондон. У меня есть код, работающий для одной кнопки, но он не работает для более чем одной кнопки и печатает последнюю out
сообщение (так как у меня есть 10 кнопок) для всех положений кнопок.
Если button1
это правда, тогда он рисует текст на GUI в указанной области через мой paintComponent()
метод.
Как я могу решить это?
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
}
3 ответа
Почему бы не использовать API всплывающей подсказки, который уже существует?
button.setTooltip("Manchester");
Вы даже используете текст HTML для получения отформатированных результатов.
button.setTooltip("<html>Manchester<br>53.4800° N, 2.2400° W</html>");
Если изображения встроены, вы даже можете предоставить изображение...
button.setTooltip("<html><img src=" + getClass().getResource("/someimage") + "/>Manchester<br>53.4800° N, 2.2400° W</html>");
Что ж, этот ответ - круто для пользователей JDK 8, так что попробуйте:
для обычного текста
buttonyoumade.setToolTipText("Text you choose");
для использования в формате html
anotherbuttonyoumade.setToolTipText("<html> any valid html code </html>");
не использовать
MouseListener
или жеMosueMotionListener
отJButton
этот метод правильно реализован вJButtons API
,нет причин, я не могу найти причину для использования
repaint()
для этой работыДругой способ добавить
ChangeListener
вJButton
и принять связанные события из полученныхButtonModel
для лучшей помощи скорее опубликуйте SSCCE, короткий, выполнимый, компилируемый, примерно
JFrame
с однимJButton