Java Swing - рисование маркеров на JSlider - PullRequest
0 голосов
/ 12 марта 2010

У меня есть индикатор выполнения, который наследуется от JSlider, чтобы обеспечить функциональность выделения. Основные моменты могут быть добавлены к ползунку в точке (и цвете), и они затем будут нарисованы на элементе управления. Следующим образом:

http://img101.imageshack.us/img101/7608/sliderexample.png

Проблема в том, что я не могу выделить в нужном месте, они должны быть в том же месте, что и маркеры. Я также не знаю, как получить левый и правый поля, где начинаются и заканчиваются маркеры.

Есть ли способ получить координаты каждого маркера? Или, возможно, лучший способ выполнить эту задачу?

Большое спасибо!

1 Ответ

2 голосов
/ 12 марта 2010

Это зависит от Look & Feel, и есть большая вероятность, что вообще нет никаких маркеров, когда пользователь использует какой-то нестандартный L & F. Фактически, ваша проблема - это расширение функциональности и графической реализации, поэтому вам, возможно, придется коснуться как JSlider, так и SliderUI.

Обратите внимание на следующие методы:

javax.swing.JSlider.getMajorTickSpacing() 
javax.swing.JSlider.getMinorTickSpacing() 

Кроме того, это может помочь изучить javax.swing.plaf.SliderUI и классы, его расширяющие, особенно

javax.swing.plaf.basic.BasicSliderUI.paintTicks(java.awt.Graphics)
javax.swing.plaf.basic.BasicSliderUI.xPositionForValue(int)
...