2009-12-05 70 views
1

我很抱歉发布很多问题到最近。更新JSlider Swing的位置

我想让JSlider根据不断更新的变量更新它的位置。

setValue(n)方法似乎不起作用。有其他选择吗?我们将此用作音乐播放器的时间标记。

回答

2

假设您已经正确配置了最小值和最大值,setValue()将起作用。 JSlider确实需要重绘的机会,所以请确保您没有绑定event dispatch thread。如果您的代码正在响应任何UI事件,则您将处于调度线程中,并应尽快返回。

在后台线程上执行任何昂贵的计算。在网上有很多这样的excellent tutorials

0

setValue方法肯定会起作用,所以我会检查您传递给setValue的值是否确实在您配置滑块的最小值和最大值之内(即检查您是不是传递一个百分比值而不是一个整数)。

要注意的第二件事:您应该只在事件分派线程上调用setValue。当然,你可以在偶数调度线程之外计算将要传递给setValue的值,但是任何对Swing组件中值的更新都应该在偶数调度线程中完成(即使用SwingUtilities.invokeLater