Я пытаюсь получить JSlider, который увеличивается каждую секунду или около того, в зависимости от точки воспроизведения MediaPlayer (из другого класса, который устанавливает значение stati c 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 () имеет значение true, когда пользователь изменяет ползунок, и когда ползунок увеличивается. Это означает, что я не могу настроить клип на указанное пользователем время, и ползунок просто возвращается к исходному положению, когда я его отпускаю.
Любой способ различить guish, когда метод меняется ползунок и когда пользователь?