我有一个继承自JSlider的进度条,以提供突出显示功能。可以在某个点(和一个颜色)将高光添加到滑块上,然后将其绘制到控件上。如下:
http://img101.imageshack.us/img101/7608/sliderexample.png
问题是我无法将高光显示在正确的位置,它们必须与标记位于同一位置。我也不知道如何检索标记开始和结束处的左边距和右边距。
反正有没有获得每个标记的坐标?还是执行此任务的更好方法?
非常感谢!
最佳答案
这取决于外观,当用户使用一些非标准的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)