2016-09-14 28 views
1

mit Wie würde man eine scrollPane verwenden, um ein Bild größer als der Bildschirm in einer Anwendung anzuzeigen, die Vollbild ist? Ich habe ein Bild, das ungefähr 8000x3800 Pixel groß ist und ich würde gerne in der Lage sein, sich mit dem gesamten Bild zu bewegen und mit ihm zu interagieren, ohne es neu skalieren zu müssen. Wenn Sie Einzelheiten über meinen Code wünschen oder allgemein fragen Sie einfach.Wie ein Bild größer als der Bildschirm anzuzeigen, um einen 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

Ich habe aber es erlaubt nicht schwenken, obwohl ich diese Option aktiviert. Außerdem werden die Bildlaufleisten nicht angezeigt, auch wenn ich diese Option aktiviere. –

+0

Bearbeitete Frage, um meinen Code einzuschließen. –

Antwort

3

Sie legen nur 2 von 4 Anker für die ScrollPane, weshalb die ScrollPane nie geändert wird und passt die Größe nur auf eine Größe, die das gesamte Bild erlaubt die Anzeige.

daher keine Scrollbalken sind notwendig und Panning nicht getan werden kann.

Sie können dieses Problem beheben, indem auch die rechten und unteren Anker setzen. Alternativ verwenden Sie die ScrollPane als Root der Scene direkt.

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; 
} 
Verwandte Themen