对于我目前的项目,我需要一个大的均匀网格与透明的背景,其中一个可以缩放和平移。我最初尝试将ScrollPane与其setPannable(true)一起使用,但很快发现,即使调用setStyle("-fx-background-color: transparent")或setStyle("-fx-background: transparent"),滚动窗格背景仍将是不确定的。因此,删除了这个简单的选项后,我需要使有问题的GridPane直接可pannable。
我已经尝试了几种方法,包括尝试将鼠标位置绑定到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());
});但是,这只会使贴图向上和向左跳跃,而不是使其按预期使用鼠标缓慢平移。
发布于 2016-09-14 19:33:29
想尽办法把它弄清楚。剩下的一个问题是,当GridPane被摇摄时,它会相当抖动,但目前它处于可接受的水平。
int x = 0;
int y = 0;
gridView.setOnMouseDragged((event) -> {
if(x != 0){ //prevent from panning before values are initialized
gridView.setTranslateX( gridView.getTranslateX() + limit(event.getX() - x, 25));
gridView.setTranslateY( gridView.getTranslateY() + limit(event.getY() - y, 25));
}
x = (int)event.getX();
y = (int)event.getY();
});其中,Limit(double num, double limit)方法将输入num限制为范围-limit,limit。降低限制会降低抖动,但这样做的代价也是降低响应性。
https://stackoverflow.com/questions/39458506
复制相似问题