Tim*_*mst 4 drag-and-drop javafx-2
我在我的应用程序中使用 JavaFX 的拖放系统,到目前为止它运行良好。
现在我想支持拖放到外部应用程序,例如。将文件从我的应用程序拖到资源管理器中。我将如何实现这一目标?
我已经通过使用实现了你所描述的:
Vector<File> files = new Vector<File>();
private ClipboardContent filesToCopyClipboard = new ClipboardContent();
...
final ObjectWithAReturnablePathField draggableObj = new ObjectWithAReturnablePathField();
...
draggableObj.setOnDragDetected(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent me)
{
Dragboard db = draggableObj.startDragAndDrop(TransferMode.ANY);
try
{
File f = new File(new URI(draggableObj.getFilePath()));
files.add(f);
filesToCopyClipboard.putFiles(files);
}
catch (URISyntaxException e)
{
e.printStackTrace();
}
db.setContent(filesToCopyClipboard);
me.consume();
}
});
draggableObj.setOnDragDone(new EventHandler<DragEvent>()
{
@Override
public void handle(DragEvent me)
{
me.consume();
}
});
Run Code Online (Sandbox Code Playgroud)
意思是:
通过在任何可返回文件路径的可拖动对象(任何节点)的 setOnDragDetected 方法上使用 TransferMode.ANY 使用列表填充 ClipboardContent,可以实现 JavaFX 2 和本机应用程序之间的文件传输。就我而言,我创建了一个名为 Thumb 的类来扩展 ImageView,并且(除其他外)我创建了一个名为 getFilePath() 的方法,该方法从用于初始化 ImageView() 的图像返回路径。顺便说一句,对于这个糟糕的例子和糟糕的英语,我很抱歉,但我现在没有时间给出更详细的答案。我希望它有帮助。干杯
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |