2014-12-22 4 views
1

현재 스냅 샷을 사용하여 TableView에서 이미지를 만들려고하고 있으며 스냅 샷은 화면에 표시된 테이블 뷰만을 잡아 먹고 있습니다. 나는 SnapshotPreferences 뷰포트를 망쳐 봤지만 도움이되지 못했습니다. 모든 제안 또는 해결 방법을 높이십시오.스냅 샷 전체 ​​표보기

편집 : 이제 TableView을 추가하고 동일한 너비와 높이의 새 창을 만들고 그 중 하나의 스냅 샷을 찍어 보았지만 공백이 생겼습니다. 나는 이것을 가지고 계속 놀았습니다. 새 창을 만들고 장면을 추가하면 모든 행이 아닌 TableView의 모든 열이 나에게 표시됩니다.

스냅 샷을 찍는 코드는 다음과 같습니다.

WritableImage image = null; 

//Get the node 
TableView<ObservableList<ObjectProperty<Item>>>pattern = mainApp.getPVController().getPattern(); 

//Create rectangle to define viewport 
Rectangle2D rect = new Rectangle2D(0, 0, pattern.getWidth(), pattern.getHeight()); 

//Define snapshot parameters  
SnapshotParameters params = new SnapshotParameters(); 
params.setViewport(rect); 

//Take the snapshot 
image = pattern.snapshot(params, image); 

답변

0

그래, 해결 방법을 찾았습니다. TableView의 기본 데이터를 사용하고 기본 데이터를 나타내는 GridPane을 만들었습니다. 내 데이터는 색상으로 표시되었으므로 아래에 표시됩니다. 다른 데이터 유형으로도이를 수행 할 수 있습니다.

이제 그늘과 너비를 바꾸는 눈금 선에 문제가 있습니다.하지만 다른 질문입니다. GridPane을 만드는 코드는 다음과 같습니다.

GridPane gPane = new GridPane(); 
    gPane.setSnapToPixel(true); 
    gPane.setStyle("-fx-background-color: DARKGREY; -fx-padding: 1;" 
        +"-fx-hgap: 1; -fx-vgap: 1;"); 

    for(int i=0; i<mainApp.getItemList().size(); i++){ // rows 
     for(int j=0; j<mainApp.getItemList().get(0).size(); j++){ //columns 

      Color color = mainApp.getItemList().get(i).get(j).getValue().getDisplayColor(); 
       int r = (int) (color.getRed() * 255); 
       int g = (int) (color.getGreen() * 255); 
       int b = (int) (color.getBlue() * 255); 

      Rectangle rect = new Rectangle(5,5); 

      rect.setStyle("-fx-fill: rgb(" + r + "," + g + "," + b + ");"); 
      gPane.add(rect, j, i); 
     } 
    } 
     Scene scene = new Scene(gPane); 
     WritableImage image = gPane.snapshot(new SnapshotParameters(), null);