我有一个继承自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)

10-07 19:42
查看更多