2016-09-07 3 views
0

내 테이블 뷰로 스크롤하기위한 이벤트 핸들러를 추가했지만 스크롤 휠을 사용하여 스크롤 할 때만 작동하지만 스크롤 막대와 함께 클릭하여 드래그 할 때 작동해야합니다. 어떤 아이디어가 잘못 됐나요? 나는 이벤트에 대해 다른 방법을 사용했지만 그들 중 누구도 일하지 않았다.JavaFX 테이블 뷰 스크롤 막대 이벤트가 실행되지 않습니다.

Heres는 내 코드 :

tableVw.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() { 
    @Override 
    public void handle(ScrollEvent scrollEvent) { 
     System.out.println("scrolling"); 
    } 
}); 

이 어떤 도움 감사합니다, 감사합니다!

+0

추가 정보를 입력해야합니다. – GlacialMan

+0

? 스크롤바를 클릭하고 테이블을 스크롤하면 텍스트 "스크롤링"이 인쇄되지 않지만 마우스 휠을 사용하여 스크롤하면 텍스트가 스크롤됩니다. – alex

+2

스크롤 이벤트는 마우스 (또는 유사한 입력 장치)로 스크롤 제스처를 나타내는 저수준 이벤트입니다. 마우스 클릭, 드래그 또는 키보드 동작을 통해 스크롤을 시작하는 컨트롤과의 상호 작용과 같은 의미있는 "스크롤 동작"을 나타내지는 않습니다. 나는 이것에 얻을 어떤 좋은 방법도 보지 않는다. 조회를 수행하여 스크롤 막대를 가져올 수 있고 리스너를 valueProperty로 등록 할 수는 있지만 꽤 못 생깁니다. –

답변

0

감사합니다 James_D. 일 코드 :

scrollbar.valueProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { 
     // Stuff with scrollbar here 
    } 
}); 

스크롤 막대를 얻으려면 내가 사용 : 그 최선의 해결책이지만 작동하는 경우

public static ScrollBar getVerticalScrollbar(TableView<?> table) { 
    ScrollBar result = null; 
    for(Node n : table.lookupAll(".scroll-bar")) { 
     if(n instanceof ScrollBar) { 
      ScrollBar bar = (ScrollBar) n; 
      if(bar.getOrientation().equals(Orientation.VERTICAL)) { 
       result = bar; 
      } 
     } 
    } 
    return result; 
} 

모르겠어요.

관련 문제