javafx组件拖动工具
功能:javafx任何组件Node都可以随意使用本工具拖动
技术分享交流 qq群(835259695)
1.效果图如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200423113602972.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI2OTg0Njc=,size_16,color_FFFFFF,t_70)
2.java代码如下
package com.hq.utils;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.input.MouseEvent;
import java.util.List;
public class NodeDragUtil {
public static void addNodeDragListener(Node node){
new DragListener(node).enableDrag(node);
}
public static void addAllDragListener(List<Node> nodeList){
nodeList.forEach(node -> {
new DragListener(node).enableDrag(node);
});
}
static class DragListener implements EventHandler<MouseEvent> {
private double xOffset = 0;
private double yOffset = 0;
private Node node;
public DragListener(Node node) {
this.node = node;
}
@Override
public void handle(MouseEvent event) {
event.consume();
if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
xOffset = event.getX();
yOffset = event.getY();
} else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
node.setTranslateX((node.getTranslateX()+event.getX() - xOffset));
node.setTranslateY((node.getTranslateY()+event.getY() - yOffset));
}
}
public void enableDrag(Node node) {
node.setOnMousePressed(this);
node.setOnMouseDragged(this);
}
}
}