5

我需要一个带有两个旋钮的滑块(代表一个范围),我在这里找到了这个漂亮的。然而,他们创建了自己的 UI,扩展了 Java 的BasicSliderUI。他们重写了paint方法来绘制自己的旋钮。我想根据当前的外观使用默认旋钮。我尝试调用BasicSliderUIpaintThumb方法,但这给了我一个通用的外观旋钮,它似乎与当前的外观和感觉无关。据我所知,JSlider从MultiSliderUI获取其 UI 。如何创建一个像JSlider一样变化但绘制两个旋钮而不是一个旋钮的 UI?

提前致谢!

4

3 回答 3

4

SwingX提供了JXMultiThumbSlider,这可能是您正在寻找的。

于 2009-07-16T22:32:57.527 回答
2

尝试从中获取当前的外观和感觉javax.swing.UIManager并调用getUI(new JSlider())它。这应该返回用于 的当前 UI JSlider,它应该可以转换为JSliderUI.

不幸的是JSliderUI没有paintThumb(Graphics g)方法,但是有方法,BasicSliderUI至少在 Windows XP 和 Windows Vista 上,系统外观是 的子类BasicSliderUI,Metal 外观也是。

因此,一旦您JSliderUI查看它是否是 的实例BasicSliderUI,如果是,您可以将其转换为BasicSliderUI并使用paintThumb(Graphics g)它,否则默认为您已经执行的方式。我不知道这是否真的有效,但如果我需要它,这将是我的第一次尝试。

我没有 Linux 或 Mac 来检查源代码是否JSliderUI也来自它们的 s BasicSliderUI,但如果你这样做了,请查看 java 源代码。

于 2009-07-22T10:33:21.837 回答
1

您可以使用 Jide Commons Layer中的 RangeSlider 类

这是开源的。

于 2009-07-19T14:30:46.063 回答