我需要一个带有两个旋钮的滑块(代表一个范围),我发现这个漂亮的here。然而,他们创造了自己的U.I.它扩展了Java的BasicSliderUI。它们覆盖了绘制方法以绘制自己的旋钮。我想根据当前的外观使用默认旋钮。我尝试调用 BasicSliderUI 的paintThumb方法,但这给了我一个通用的旋钮,它似乎与当前的外观和感觉无关。据我所知,JSlider得到它的U.I.来自MultiSliderUI。如何创建一个更改为JSlider的U.I,但是绘制两个旋钮而不是一个?
提前致谢!
答案 0 :(得分:4)
SwingX提供JXMultiThumbSlider,这可能就是您要找的内容。
答案 1 :(得分:2)
尝试从javax.swing.UIManager
获取当前外观并在其上调用getUI(new JSlider())
。这应该返回用于JSlider
的当前用户界面,该用户界面应该可投放到JSliderUI
。
不幸的是JSliderUI
没有paintThumb(Graphics g)
方法,但是BasicSliderUI
方法,至少在Windows XP和Windows Vista上,系统的外观是BasicSliderUI
的子类。 1}},金属外观也是如此。
所以,一旦你JSliderUI
看到它是BasicSliderUI
的实例,如果是,你可以将它投射到BasicSliderUI
并在其上使用paintThumb(Graphics g)
,否则默认为你已经这样做的方式。我不知道这是否真的有效,但如果我需要的话,这将是我的第一次尝试。
如果他们的JSliderUI
也来自BasicSliderUI
,我没有Linux或Mac检查来源,但如果你这样做,那么请查看java源代码。
答案 2 :(得分:1)
您可以使用RangeSlider类 Jide Commons Layer
这是开源。