2009-11-24 16 views
0

자바 뮤직 플레이어 용 스윙을 사용하여 GUI를 구현하고 있습니다. WinAmp의 바처럼 시간 막대를 만들 수 있는지 알고 싶습니다. 예를 들어 노래의 특정 위치로 이동하여 현재 위치를 보여줄 수 있습니다. 가능하다면이 문제에 대해 어떻게 생각 하나?자바 뮤직 플레이어 GUI

또한 JList를 사용하여 재생 목록을 표시하고 있는데 두 번 클릭 이벤트를 얻는 방법을 알고 싶습니다. 선택 이벤트가 있다는 것을 알고 있지만 목록에있는 객체를 선택하고 두 번 클릭하면 단일 클릭이 아닌 재생을 시작하겠습니다. 또한 한 번만 선택하면 이벤트가 계속 호출되지 않습니다.

감사합니다.

+0

JavaFX에는 많은 음악 플레이어 예제가 있습니다. 어쩌면 JavaFX가 Swing보다 더 나은 선택 일 수 있습니다. –

+0

JavaFX가 Swing 구성 요소에 매핑되지 않고 UI를 정의하는 데 더 좋은 방법을 제공합니까? – Joey

답변

1

그런 컨트롤을 만들 수 있습니다. 서브 클래스 JSlider을 원한다면 그에 맞게 조정하십시오. 모양을 적용하기 위해 paintComponent 메서드를 간단하게 재정의 할 수 있지만 몇 분 안에 완료되지 않을 수도 있습니다. 일반적으로 엄지 손가락의 오른쪽이나 왼쪽을 클릭하면 클릭 위치로 바로 이동하는 대신 특정 간격으로 점프가 발생하기 때문에 슬라이더에서 마우스 클릭을 다르게 처리 할 수도 있습니다.

두 번 클릭하는 경우 재정의 한 mouseClicked 메서드를 MouseListener으로 간단히 사용하십시오. MouseEvent에는 getClickCount이라는 메서드가 있는데 두 번 클릭하면 2로 검사 할 수 있습니다.

"한 번만 선택"으로 무엇을 의미하는지 잘 모르겠습니다. 나는 여기에 짐작하고 있지만 JList는 두 번 선택 "이벤트"를 발생시킵니다. 마우스 버튼을 한 번 누를 때마다, 또 다른 하나를 놓을 때 발생합니다. 이것은 때때로 성가시다. 특히 선택시 더 비싼 것을 발사하면 더욱 그렇다.

+0

감사합니다. 나는 이것을 명심해야한다. JList에는 목록의 어떤 항목이 선택되어 있는지 기록하는 ListSelectionListener가 있습니다. 사용자가 항목을 두 번 클릭 할 때만 항목을 선택하면 처리기 메서드가 계속 실행되는 것을 원하지 않습니다. 즉, 노래를 계속 중단하고 재생하지 않으려면 한 번 멈추고 싶습니다. 새로 선택한 노래를 한 번 재생하기 시작합니다). 감사합니다. – GLRockwell

+0

그럼, 분명히 스스로 목록 선택을 처리해야합니다. 나는 현재 확실히 당신이 그 하위 클래스의 JList 또는 ListSelectionModel에 대한 그 대답 중 하나 (자바 모든 이상한 경우에는 하위 클래스 * 뭔가를 * 한숨을 필요로하는 이상한 경우) *해야합니다 확신 해요. 그러나 대부분의 음악 플레이어는 다르게 작동합니다. 목록에서 * 선택 *을 실제로 재생되는 것과 별도로 유지합니다. 따라서 "이벤트"를 선택하는 대신 두 번 클릭 할 때만 노래를 재생할 수 있습니다. 그렇게하면 연주하는 것에 영향을주지 않고 다른 노래를 선택할 수 있습니다. – Joey