Обновление позиции JSlider Swing - PullRequest
1 голос
/ 05 декабря 2009

Мои извинения за публикацию тонны вопросов в последнее время.

Я пытаюсь заставить JSlider обновлять свою позицию на основе постоянно обновляемой переменной.

Метод setValue (n), похоже, не работает. Есть ли альтернатива? Мы используем это как маркер времени для музыкального проигрывателя.

Ответы [ 2 ]

2 голосов
/ 05 декабря 2009

При условии, что вы правильно настроили минимальное и максимальное значение, setValue() будет работать.Для JSlider нужна возможность перерисовки, поэтому убедитесь, что вы не связываете поток обработки событий .Если ваш код отвечает на какое-либо событие пользовательского интерфейса, вы находитесь в потоке диспетчеризации и должны вернуться как можно скорее.

Выполните любые дорогостоящие вычисления в фоновом потоке.Для этого в Интернете существует множество превосходных учебных пособий .

0 голосов
/ 05 декабря 2009

Метод setValue определенно работает, поэтому я бы проверил, что значение, которое вы передаете в setValue, действительно находится в пределах минимального и максимального значения, с которым вы настроили ползунок (т.е. убедитесь, что вы вы не передаете процентное значение вместо целого числа).

Второе, на что следует обратить внимание: вы должны вызывать setValue только в потоке диспетчеризации событий. Конечно, вы можете вычислить значение, которое будет передано в setValue вне четного потока диспетчеризации, но любое обновление значения в компоненте Swing должно выполняться в четном потоке диспетчеризации (т. Е. С использованием SwingUtilities.invokeLater)

...