更新 JSlider Swing 的位置

发布于 2024-08-14 10:51:30 字数 119 浏览 5 评论 0原文

对于最近发布的大量问题,我深表歉意。

我试图让 JSlider 根据不断更新的变量来更新其位置。

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

My apologies for posting tons of questions as of late.

I'm trying to get a JSlider to update its position based on a constantly updating variable.

The setValue(n) method doesn't seem to work. Is there any alternative? We're using this as a time marker for a music player.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黯淡〆 2024-08-21 10:51:31

只要您正确配置了最小值和最大值,setValue() 就可以工作。 JSlider 确实需要重绘的机会,因此请确保您没有占用 事件调度线程。如果您的代码正在响应任何 UI 事件,则您位于调度线程上,并且应该尽快返回。

在后台线程上执行任何昂贵的计算。有大量的优秀教程网络。

Provided that you've correctly configured a minimum and maximum value, setValue() will work. The JSlider does need an opportunity to redraw, so make sure you're not tying up the event dispatch thread. If your code is responding to any UI event, you're on the dispatch thread and should return as soon as possible.

Perform any expensive calculations on a background thread. There are a plethora of excellent tutorials for this on the web.

超可爱的懒熊 2024-08-21 10:51:31

setValue 方法确实有效,因此我会检查您传递给 setValue 的值是否确实在您配置的最小值和最大值内滑块(即检查您是否传递的是百分比值而不是整数)。

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

The setValue method definitely does work, so I would check that the value that you're passing in to setValue is indeed within the minimum and maximum value that you've configured the slider with (ie check that you're not passing a percentage value in instead of an integer).

A second thing to watch out for: you should only be calling setValue on the event dispatching thread. Of course you can calculate the value that is going to be passed to setValue outside of the even dispatching thread, but any update to a value in a Swing component should be done in the even dispatching thread (ie using SwingUtilities.invokeLater)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文