【发布时间】:2017-01-20 08:59:48
【问题描述】:
对于我当前的项目,我需要一个带有透明背景的大型均匀网格,可以缩放和平移。我最初尝试将ScrollPane 与setPannable(true) 一起使用,但很快发现即使您调用setStyle("-fx-background-color: transparent") 或setStyle("-fx-background: transparent"),滚动窗格背景仍将保持不透明。因此,消除了这个简单的选项后,我需要使有问题的 GridPane 可以直接平移。
我已经尝试了几件事,包括尝试将鼠标位置绑定到GridPane 的 Translate 属性(这根本不起作用),但我没有找到更有希望的替代方法来正常工作:
GridPane gridView = new GridPane();
int x;
int y;
gridView.setOnDragEntered( (event) -> {
x = event.getX();
y = event.getY();
});
gridView.setOnDragDetected( (event) -> {
gridView.setTranslateX(X - event.getX());
gridView.setTranslateY(Y - event.getY());
});
但是,这只会让地图向上和向左跳跃,而不是让它像预期的那样用鼠标缓慢平移。
【问题讨论】:
-
你可以在画布上使用画线而不是网格窗格吗?
-
我不这么认为,因为网格上的每个方格都需要包含一个节点,该节点会根据其位置和该方格内表示的数据触发事件。
-
看看这个,看看你是否可以使用它。 stackoverflow.com/questions/33534594/generating-an-n-x-n-grid/…。它在 Swing 中,但您可以将其转移到 FX。此外,Spanning 和 Zooming 可以是改变 x 和 y 位置的另一个属性。如果此解决方案可以接受,我将帮助您编写缩放和平移代码。
-
您能否将 GridPane 放置在 ScrollPane 内的 StackPane 中,让需要显示在 StackPane 下方网格下方的内容?