我最近不得不为FlexGanttFX实现自动滚动功能,并认为我的解决方案可能对其他人有用。 您可以在下面的清单中找到它的基本概念。 主要思想是使用后台线程来调整列表视图使用的虚拟流节点的像素位置。 当检测到“靠近”顶部或底部边缘的拖拉时,线程开始。 “接近”由接近变量定义。
通过为接近值使用属性以及为线程化工作使用类型“任务”和“服务”,显然可以改进此代码。
package com.dlsc;
import javafx.application.Platform;
import javafx.scene.Node;
import javafx.scene.control.ListView;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.Region;
/*
* Yes, unfortunately we need to use private API for this.
*/
import com.sun.javafx.scene.control.skin.VirtualFlow