Основная причина, по которой очевидно, что первая попытка не сработала, заключается в том, что метки не добавляются в ползунок (как, вероятно, следует делать, учитывая, что их в любом случае не слишком много и карта - это карта реальных JLabels), но просто отображается на лету в PaintHorizontal / VerticalLabel из BasicSliderUI.Так что совет Роба - это естественный путь: вычислить, находится ли какая-либо из меток под mousePosition, и вернуть ее всплывающую подсказку, если она доступна.
Удивительно, но нет общедоступного API (ни в JSlider, ни в делегате пользовательского интерфейса) длядобиться расчета границ метки.Вам нужен доступ к x / yPositionForValue - но он защищен.Таким образом, есть только грязные выходы
- доступ к x / yPositionForValue рефлексивно
- c & p и реализация в подклассе JSlider: дает только приближения, так как многие из внутренних элементов пользовательского интерфейса защищены или дажеprivate
Хотелось бы доказать, что ошибался и увидел бы чистую реализацию (без подклассов ui-делегатов :-)