【发布时间】:2012-06-03 01:09:48
【问题描述】:
我正在尝试在 JSlider 下绘制等宽的彩色矩形,以便刻度线分隔颜色。我真的很接近,但不能让它非常完美。我打印了一堆值,我的问题是滑块的宽度不是滑动条的实际长度。滑块的 x 位置也不是条的起始位置。这是我根据滑块位置设置彩色矩形边界的代码。
for(int i = 0; i < Global.emSpectrum.length; i++) //emSpectrum.length is the number of colored rectangles
{
emSpectrum.get(i).setColorRect(Global.emSpectrum[i], 13 + i * (int)((this.slider.getWidth())/Global.emSpectrum.length), //13 lines up the first color under the bar
this.slider.getY() + this.slider.getHeight()/2, (int)((this.slider.getWidth())/Global.emSpectrum.length),
(int)(Global.rectHeight * getHeight()));
}
有没有更好的方法来解决这个问题?
谢谢!
【问题讨论】:
-
如果您没有很快得到合适的答案,请考虑创建并发布sscce。这将使我们更容易为您提供帮助,并且可能会更快地为您提供合适的解决方案。
-
在您的代码中,您有一条注释,“条形下方的第一种颜色排列 13 条。”我假设您手动校准它,更改数字直到您正确设置为 13?如果是这样,这不是的方法。如果您在不同的操作系统上使用不同的look and feel 运行它会发生什么?
-
考虑为您的 JSlider 使用自定义标签表。您可以根据 API 使用
setLabelTable(...)方法设置它。
标签: java applet slider jslider