2013-06-12 2 views
1

JSlider를 만들었습니다. 슬라이더의 아무 곳이나 클릭하고 엄지 손가락을 마우스의 위치로 이동시키고 드래그를 시작하기를 원합니다 (일반적으로 엄지 손가락을 클릭해야합니다). 나는 방법 마우스 수신기를 추가하여 마우스 위치에 엄지 손가락 이동을 할 수 있었다 :프로그래밍 방식으로 JSlider 드래그 시작하기

public void mousePressed(MouseEvent e) { 
    slider.setValue(((BasicSliderUI) slider.getUI()).valueForXPosition(e.getX())); 
} 

문제는 내가 마우스 버튼을 한 번 눌러 다음으로 이동한다는 것입니다, 엄지 손가락 자리에 유지됩니다. 프로그래밍 방식으로 끌기를 시작하는 방법이 있습니까?

+0

[모든 MouseMotionListener] (http://docs.oracle.com/javase/7/docs/api/java/awt/event/ : 나는 BasicSliderUI를 확장하고 이벤트와 마우스 수신기를 가진 클래스를 생성 MouseMotionListener.html) 및 mouseDragged 이벤트를 모니터 – MadProgrammer

+0

그러나 기본 끌기를 시작하지 않습니다. 나는 틱 마크를 찍기 위해 마우스를 놓았다. 방금 mouseDragged 이벤트를 모니터링하면 마우스를 놓기 전에 스냅됩니다. – jimn346

답변

1

SliderUI의 trackListener의 mousePressed 이벤트를 호출하여 드래그를 시작할 수있었습니다.

public void mousePressed(MouseEvent e) { 
    slider.setValue(valueForXPosition(e.getX())); 
    trackListener.mousePressed(e); 
} 
관련 문제