java - 如何使用 scrollPane JavaFX 显示大于屏幕的图像

标签 java javafx imageview scrollpane

如何使用 scrollPane 在全屏应用程序中显示大于屏幕的图像?我有一个大约 8000x3800 像素的图像,我希望能够移动整个图像并与之交互而无需调整它的大小。如果您想了解我的代码的细节或一般情况,请询问。

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

}

最佳答案

您只为 ScrollPane 设置了 4 个 anchor 中的 2 个,这就是为什么 ScrollPane 永远不会调整大小,只会调整到允许显示整个图像的大小。

因此不需要滚动条,也无法进行平移。

您也可以通过设置右侧和底部 anchor 来解决此问题。或者直接使用 ScrollPane 作为 Scene 的根。

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

关于java - 如何使用 scrollPane JavaFX 显示大于屏幕的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39488460/

相关文章:

java - 通过匿名操作监听器类将 JPanel 添加到 JFrame

JavaFX:我编写的代码无关紧要,它总是显示空白的 "hello word"GUI

android - Intent 从相机中选择压缩图像或分辨率或尺寸较低的图像

android - 无法通过位图填充 ImageView ,奇怪的行为

java - 隐藏屏幕上方的 ImageView/以编程方式将 y 位置设置为负值

java - 如何使用 JOptionPane 和数组创建用户多个输入的列表?

java - AnnotationException : @OneToOne or @ManyToOne on MySchema$Parent. propertyX 引用未知实体:MySchema$Child

java - Java.lang.Cloneable 接口(interface)指南的问题

Javafx Stage 可见性属性

java - 在 JavaFX 中切换 View