简体   繁体   中英

Java Swing - Drawing markers on JSlider

I have a progress bar which inherits from JSlider to provide highlighting functionality. Highlights can be added to the slider at a point (and a Color) and these are then painted onto the control. As follows:

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

The problem is that I cannot get the highlights in the right place, they need to be in the same location as the markers. I also do not know how to retrieve the left and right margins to where the markers start and end.

Is there anyway to get the coordinates of each marker? Or perhaps a better way of performing this task?

Many Thanks!

This is dependent on the Look & Feel and there's a good chance that there aren't any markers at all when the user uses some non-standard L&F. In fact, your problem is both an extension of functionality and graphic realization so you may have to touch both, JSlider and SliderUI.

Note the following methods:

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

Also, it may help to look into javax.swing.plaf.SliderUI and the classes extending it, especially

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM