我有一个 ScrollPane,它包含一个 GridPane,它包含一个 ImageView,它包含一个 Image。我想要的是图像在 GridPane 中居中。
如果没有 ScrollPane,我可以使用 setAlignment(Pos.TOP_CENTER) 完成此操作,但是一旦我将 GridPane 添加到 ScrollPane,图像就会显示在左上角。
如何让 ScrollPane 使用 setAlignment() 值或手动居中图像?
---示例编辑---
没有滚动 Pane 的代码:
public class ImageDB extends Application
{
@Override
public void start(Stage root)
{
Image image = new Image("0.jpg");
ImageView view = new ImageView();
view.setImage(image);
GridPane grid = new GridPane();
grid.getChildren().add(view);
grid.setAlignment(Pos.TOP_CENTER);
BorderPane border = new BorderPane();
border.setCenter(grid);
root.setScene(new Scene(border));
root.setMaximized(true);
root.show();
}
}
结果:
https://i.imgur.com/eWvBQy6.png
带有滚动 Pane 的代码:
public class ImageDB extends Application
{
@Override
public void start(Stage root)
{
Image image = new Image("0.jpg");
ImageView view = new ImageView();
view.setImage(image);
ScrollPane scroll = new ScrollPane();
scroll.setContent(view);
GridPane grid = new GridPane();
grid.getChildren().add(scroll);
grid.setAlignment(Pos.TOP_CENTER);
BorderPane border = new BorderPane();
border.setCenter(scroll);
root.setScene(new Scene(border));
root.setMaximized(true);
root.show();
}
}
结果:
https://i.imgur.com/1aJDX4m.png
最佳答案
而imageHolder.minWidthProperty().bind(Bindings.createDoubleBinding(() -> scroll.getViewportBounds().getWidth(), scroll.viewportBoundsProperty()));
确实成功了,它似乎有一些问题(例如,有时显示错误的滚动条/闪烁的内容等)。
我后来发现一个简单的scroll.setFitToWidth(true);
(和/或 scroll.setFitToHeight(true);
)也可以通过滚动 Pane 保持内容大小,但没有上述问题!
关于javafx-8 - 如何使 javafx 8 滚动 Pane 的内容居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687994/