【发布时间】:2020-02-26 15:50:37
【问题描述】:
我正在尝试基于 MediaPlayer 的播放头(来自另一个设置静态 JSlider 值的类)的 JSlider 每秒递增一次。例如,
Window.timeSlider/*static JSlider from other class*/.setValue(/*int current progress of the audio clip*/);
它充当音频文件的时间线。它大约每秒调用一次。但是,我想分别检测用户输入——当用户手动拖动滑块时——与其他类所做的增量更改。当我尝试使用滑块的动作监听器时遇到了这个问题:
public void stateChanged(ChangeEvent e) {
if (e.getSource() == timeSlider) {
JSlider src = (JSlider)e.getSource();
if (!src.getValueIsAdjusting()) {
timeSliderChanged = true;
}
}
}
问题在于 getValueIsAdjusting() 在用户更改滑块时为真,以及在滑块递增时也是如此。这意味着我无法将剪辑调整到用户指定的时间,并且当我释放它时滑块会简单地跳回其原始位置。
有什么方法可以区分方法何时改变滑块和用户何时改变?
【问题讨论】:
-
我最好使用
JProgressBar和MouseListener..