2016-09-14 24 views
1

フルスクリーンのアプリケーションで画面よりも大きな画像を表示するにはどのようにscrollPaneを使用しますか?私は約8000x3800ピクセルの画像を持っていて、サイズを変更することなく画像全体を移動してやりとりしたいと思っています。あなたが私のコードについての細かいことを望むなら、あるいは一般的に聞いてください。scrollPaneを使用して画面よりも大きな画像を表示する方法JavaFX

public class SourceCodeVersion8 extends Application{ 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     AnchorPane mapAnchorO = addMapAnchor(); 
     Scene mapScene = new Scene(mapAnchorO); 
     primaryStage.setScene(mapScene); 
     primaryStage.setFullScreen(true); 
     primaryStage.setResizable(false); 
     primaryStage.show(); 
    } 

    //Creates an AnchorPane for the map 
    private AnchorPane addMapAnchor() 
    { 
     AnchorPane mapAnchor = new AnchorPane(); 
     ScrollPane mapScrollO = addMapScroll(); 
     mapAnchor.getChildren().add(mapScrollO); 
     AnchorPane.setLeftAnchor(mapScrollO, 0.0); 
     AnchorPane.setTopAnchor(mapScrollO, 0.0); 
     return mapAnchor; 
    } 

    //Creates an ImageView for the map 
    private ImageView addMapView() 
    { 
     Image mapImage = new Image("WorldProvincialMap-v1.01.png"); 
     ImageView mapView = new ImageView(mapImage); 
     return mapView; 
    } 

    //Creates a scrollPane for the map 
    private ScrollPane addMapScroll() 
    { 
     ScrollPane mapScroll = new ScrollPane(); 
     ImageView mapViewO = addMapView(); 
     mapScroll.setContent(mapViewO); 
     mapScroll.setPannable(true); 
     return mapScroll; 
    } 

} 
+0

私はこのオプションを有効にしたにもかかわらずパンニングを許可していません。さらに、このオプションを有効にしても、スクロールバーは表示されません。 –

+0

編集した質問に自分のコードが含まれています。 –

答えて

3

あなただけScrollPaneがサイズ変更しないとちょうど全体の画像を表示することができますサイズに変更されないされている理由である、ScrollPane 4つのアンカーの2を設定します。

したがって、スクロールバーは必要ありません。パンニングは実行できません。

これを修正するには、右と下のアンカーを設定します。代わりにSceneのルートとしてScrollPaneを直接使用してください。

private AnchorPane addMapAnchor() { 
    AnchorPane mapAnchor = new AnchorPane(); 
    ScrollPane mapScrollO = addMapScroll(); 
    mapAnchor.getChildren().add(mapScrollO); 
    AnchorPane.setLeftAnchor(mapScrollO, 0.0); 
    AnchorPane.setTopAnchor(mapScrollO, 0.0); 
    AnchorPane.setBottomAnchor(mapScrollO, 0.0); 
    AnchorPane.setRightAnchor(mapScrollO, 0.0); 
    return mapAnchor; 
} 
関連する問題