JavaFX-向后拖动节点+滚动窗格?
我有一个JavaFX应用程序,它有一个可滚动的区域。在该可滚动区域中,可以添加各种类型的可拖动节点。您可能会认为,如果将节点拖向边,它将朝该方向滚动。但是,它会以相反的方向滚动 拖动的工作原理如下:JavaFX-向后拖动节点+滚动窗格?,java,javafx,javafx-8,Java,Javafx,Javafx 8,我有一个JavaFX应用程序,它有一个可滚动的区域。在该可滚动区域中,可以添加各种类型的可拖动节点。您可能会认为,如果将节点拖向边,它将朝该方向滚动。但是,它会以相反的方向滚动 拖动的工作原理如下: myNode.setOnMousePressed(new EventHandler<MouseEvent>(){ @Override public void handle(MouseEvent t){ ori
myNode.setOnMousePressed(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent t){
originalX1 = 200;
originalY1 = 200;
newX1 = ((WebView)(t.getSource())).getTranslateX();
newY1 = ((WebView)(t.getSource())).getTranslateY();
System.out.println("(" + newX1 + ", " + newY1 + ")");
}
});
myNode.setOnMouseDragged(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent t){
double offsetX = t.getSceneX() - 210;
double offsetY = t.getSceneY() - 220;
double newTranslateX = newX + offsetX;
double newTranslateY = newY + offsetY;
((NodeType)(t.getSource())).setTranslateX(newTranslateX);
((NodeType)(t.getSource())).setTranslateY(newTranslateY);
System.out.println("(" + newTranslateX + ", " + newTranslateY + ")");
}
});
如果要在滚动窗格中滚动,可能应该使用滚动窗格的Hvalue和Vvalue。 作为一种方法,如下所示:
if (scrollPane.getViewportBounds().getWidth() - t.getSceneX() <= 20) { // Look if the user dragged to the right border
// Set the horizontal scroll-bar 3% wider
scrollPane.setHvalue(scrollPane.getHvalue() + 0.03);
} else if (scrollPane.getViewportBounds().getHeight() - t.getSceneY() <= 20) { // Look if the user dragged to the bottom border
// Set the vertical scroll-bar 3% wider
scrollPane.setVvalue(scrollPane.getVvalue() + 0.03);
}
// @TODO Do this for the top and left border too
快乐编码,
Kalasch你有一个可以拖动的滚动窗格,还是webview是可滚动的区域?哇,我想把它改成NodeType。它是各种不同的节点类型,可以在anchorpane中拖动,适合滚动窗格。谢谢你的回复,我想我什么也得不到@卡拉什尼