Попробуйте получить текущий внешний вид от 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.