Наведите курсор на 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

Другие вопросы по тегам