2016-09-14 10 views
0

私はJavaFXとCSSで作られたアプリケーションに取り組んでいます。私は、GridPaneの内側にあるscrollPane内に画像を表示しなければならないところに達しました。私はこの写真をズームする必要があります。トラックパッドのマルチタッチ機能を意図どおりに使用することに成功しました。JavaFX 2.2 - scrollPaneをズームした後にスクロールする方法

ズームインすると、スクロールバーが表示されないか、読み込み時の状態にとどまります。 (バーは画像のサイズに応じて表示されます)。

ズームアウト時にも同じことが起こります。

写真は自分のために話します。

App with a picture loaded. NO zooming. 写真が長すぎるため、縦スクロールバーが表示されます。

スクロールバーが表示されません。同じ状態の垂直なものを除いて。

ズームアウトすると、同じことが分かります。

So.どのようにしてズーミングに合わせてバーを設定できますか?トラックパッドで画像を「移動」できるようにしたい。 (スクロールバーは、マルチタッチジェスチャーで実行されている、それが動作します。)

はここに私のコードの一部です:

Tab newTab = new Tab(file.getName()); 
    newTab.setClosable(true); 
    // Create ImageView of Picture 
    ImageView imageView = new ImageView(); 
    // Add ImageView to tab 

    scrollPane = new ScrollPane(); 

    /* 
    * ZOOM 
    */ 

    zoomProperty = new SimpleDoubleProperty(200); 

    zoomProperty.addListener(new InvalidationListener() { 
     @Override 
     public void invalidated(Observable arg0) { 
      imageView.setFitWidth(zoomProperty.get() * 4); 
      imageView.setFitHeight(zoomProperty.get() * 3); 
     } 
    }); 

    scrollPane.setOnZoom(new EventHandler<ZoomEvent>() { 
     @Override 
     public void handle(ZoomEvent event) { 
      imageView.setScaleX(imageView.getScaleX() * event.getZoomFactor()); 
      imageView.setScaleY(imageView.getScaleY() * event.getZoomFactor()); 
      event.consume(); 
     } 
    }); 

    scrollPane.setOnZoomFinished(new EventHandler<ZoomEvent>() { 
     @Override 
     public void handle(ZoomEvent event) { 
      // I want to add something here but don't know what. 
      event.consume(); 
     } 
     }); 

    /* 
    * END ZOOM 
    */ 

    imageView.setImage(new Image(file.toURI().toString())); 
    imageView.preserveRatioProperty().set(true); 
    scrollPane.setContent(imageView);  
    newTab.setContent(scrollPane); 
    TabView.addTab(newTab); 
} 

はどうもありがとうございました。もし私が何かを忘れてしまったら、確認や他の情報を頼むことをためらってはいけません。

答えて

0

私はimageview.setFitWidth()を使用していなかったことを実感しました。スクロールペインはそれ自体に適応しています。今は動作しますが、ズーミングははるかに最悪です。

+0

また、 'imageView.setSmooth(true);を使用してください。 – GOXR3PLUS

関連する問題