2016-09-12 6 views
0

현재 프로젝트에서는 확대/축소 할 수있는 투명한 배경을 가진 큰 짝수 격자가 필요합니다. 처음에 ScrollPanesetPannable(true)과 함께 사용하려했지만 setStyle("-fx-background-color: transparent") 또는 setStyle("-fx-background: transparent")으로 전화를 걸더라도 스크롤 판 배경이 계속 불투명하다는 것을 곧 발견했습니다. 그래서 쉬운 옵션을 없애면, 문제의 GridPane을 직접 pannable로 만들 필요가 있습니다.JavaFX pannable GridPane

나는 '는의 재산을 (아주 간단하게 작동하지 않았다) 번역 GridPane에 마우스 위치를 결합하는 시도를 포함하여, 이미 몇 가지를 시도했습니다, 나는 제대로 작동하려면 더 유망한 대안을 가져 오지 못했습니다 :

그러나지도를 의도 한대로 천천히 이동하는 대신지도를 왼쪽 위로 이동합니다.

+0

격자 선을 사용하는 대신 Canvas에 선을 그릴 수 있습니까? – Steven

+0

그리드의 각 사각형은 해당 사각형 내에서 표현되는 데이터와 위치에 따라 이벤트를 트리거하는 노드를 포함해야하므로 그렇게 생각하지 않습니다. – narf0708

+0

이것을 살펴보고 사용 가능한지 확인하십시오. http://stackoverflow.com/questions/33534594/generating-an-n-x-n-grid/33535310#33535310. 스윙에 있지만 FX로 전송할 수 있습니다. 또한 스패닝 및 확대/축소는 x 및 y 위치를 변경하는 또 다른 속성 일 수 있습니다. 이 솔루션을 사용할 수 있다면 확대/축소 및 패닝 코딩을 도와 드리겠습니다. – Steven

답변

0

대부분 알아 내기 위해 관리했습니다. 남아있는 한 가지 문제점은 GridPane이 패닝 될 때 다소 번거롭기는하지만 지금은 받아 들일 수있는 수준이라는 것입니다. Limit(double num, double limit) 방법은 범위 [-limit, 한계]에 입력 NUM 제한

int x = 0; 
    int y = 0; 
    gridView.setOnMouseDragged((event) -> { 
     if(x != 0){ //prevent from panning before values are initialized 
      gridView.setTranslateX(gridView.getTranslateX() + limit(event.getX() - x, 25)); 
      gridView.setTranslateY(gridView.getTranslateY() + limit(event.getY() - y, 25)); 
     } 
     x = (int)event.getX(); 
     y = (int)event.getY(); 
    }); 

. 한계를 줄이면 지터가 줄어들지 만 응답 성도 저하 될뿐입니다.