2009-11-24 7 views
0

Я использую GUI, используя Swing для музыкального проигрывателя Java. Я хотел бы знать, можно ли, например, создать панель времени, например, в WinAmp, которую можно переместить, чтобы перейти к определенной позиции в песне и отобразить текущую позицию. Если возможно, как это можно сделать?Java Music Player GUI

Кроме того, я использую JList для отображения плейлистов, и я хотел бы знать, как получить события двойного щелчка. Я знаю, что есть события выбора, но я бы хотел, чтобы объекты в списке были выбраны и начали играть с двойным щелчком, а не с одним кликом. Я также хотел бы, чтобы они были выбраны только один раз, поэтому событие не будет постоянно вызываться.

спасибо.

+0

В JavaFX есть много примеров музыкальных проигрывателей. Возможно, JavaFX будет лучшим выбором, чем Swing. –

+0

В любом случае карта JavaFX не отображала компоненты Swing и не предоставляла более удобный способ определения пользовательского интерфейса? – Joey

ответ

1

Вы, безусловно, можете создать такой элемент управления. Возможно, вам понадобится подкласс класса JSlider и соответствующим образом адаптировать его. Вы можете просто переопределить метод paintComponent, чтобы адаптировать внешний вид, но это, вероятно, не было сделано за несколько минут. Вы также можете обрабатывать щелчки мыши на слайдере по-разному, потому что я думаю, что обычно щелчок правой или левой стороной большого пальца заставляет ползунок прыгать на определенный интервал, а не прыгать прямо в место щелчка.

Что касается двойного щелчка, просто используйте переопределенный mouseClicked метод MouseListener. У MouseEvent есть метод с именем getClickCount, который вы можете проверить, чтобы быть 2 для двойного щелчка.

Я не совсем уверен, что вы имеете в виду под «только один раз». Я угадываю здесь, но JList запускает два «События» для каждого щелчка: один при нажатии кнопки мыши, другой после релиза. Иногда это раздражает, особенно если вы снимаете что-то более дорогое при выборе.

+0

Спасибо. Я буду помнить об этом. Я знаю, что JList имеет ListSelectionListener, который записывает, какой элемент в списке выбран. Я хочу, чтобы элемент был выбран, когда пользователь дважды щелкает элемент, и я не хочу, чтобы он постоянно запускал метод обработчика (это означает, что я не хочу, чтобы песня постоянно останавливалась и играла, я хочу, чтобы она остановилась один раз и начать воспроизведение вновь выбранной песни один раз). Спасибо. – GLRockwell

+0

Ну, тогда вам, разумеется, нужно самому управлять списком. В настоящее время я не совсем уверен, что вы должны подклассифицировать JList или ListSelectionModel для этого, но один из них должен быть ответом (Java - это странно, если каждая отдельная проблема требует подклассификации чего-то * sigh *). Однако большинство музыкальных плееров работают по-разному: они сохраняют * выбор * в списке отдельно от того, что на самом деле играет. Таким образом, вы можете просто воспроизвести песню дважды, вместо того, чтобы использовать «событие». Таким образом, вы можете выбрать другие песни, не влияя на то, что играет. – Joey

Смежные вопросы