如何使用 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/