Java Swing Range Slider U.I - PullRequest
4 голосов
/ 17 июля 2009

Мне нужен ползунок с двумя ручками (представляющий диапазон), и я нашел этот отличный здесь . Однако они создали свой собственный У.И. который расширяет Java BasicSliderUI . Они переопределяют метод рисования, чтобы нарисовать свои собственные ручки. Я хотел бы использовать ручки по умолчанию на основе текущего внешнего вида . Я попытался вызвать метод BasicSliderUI paintThumb , но это дает мне универсальную ручку, которая, кажется, не привязана к текущему виду. Насколько я могу судить, JSlider получает свой U.I. от MultiSliderUI . Как я могу создать U.I, который изменяется как JSlider , но рисует две ручки вместо одной?

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 17 июля 2009

SwingX обеспечивает JXMultiThumbSlider , что может быть тем, что вы ищете.

2 голосов
/ 22 июля 2009

Попробуйте получить текущий внешний вид от javax.swing.UIManager и позвоните на него getUI(new JSlider()). Это должно вернуть текущий пользовательский интерфейс, используемый для JSlider, который должен быть преобразован в JSliderUI.

К сожалению, JSliderUI не имеет paintThumb(Graphics g) метода, но BasicSliderUI имеет, и, по крайней мере, в Windows XP и Windows Vista, внешний вид системы является подклассом BasicSliderUI, так же как и у Metal смотреть и чувствовать.

Итак, когда у вас есть JSliderUI, посмотрите, является ли он экземпляром BasicSliderUI, если вы можете привести его к BasicSliderUI и использовать на нем paintThumb(Graphics g), в противном случае по умолчанию используется то, что вы делаете. уже. Я не знаю, работает ли это на самом деле, но это была бы моя первая попытка, если бы мне это было нужно.

У меня нет Linux или Mac, чтобы проверить источник, если их JSliderUI также получены из BasicSliderUI, но если вы это сделаете, посмотрите исходный код Java.

1 голос
/ 19 июля 2009

Вы можете использовать класс RangeSlider из Слой Jide Commons

Это с открытым исходным кодом.

...