我已经在JavaFX中成功实现了拖放功能。拖动源和目标都很乐意支持复制和移动传输模式,因此我在两端使用TransferMode.COPY_OR_MOVE
。
在这种情况下,我相信JavaFX 正确默认使用复制传输模式作为默认值。我将这个正确性建立在UX question and answer上,虽然很明显可能没有绝对标准。如果按下SHIFT键,JavaFX将切换到移动传输模式。
尽管如此,我希望 move 成为默认值,并且只能通过键修饰符进行复制。我搜索了网络,并在代码中,但我找不到调整此默认行为的方法。有谁知道吗?我也尝试在案例顺序问题上使用单独的传输模式枚举,但这也不起作用。
我进一步考虑过尝试捕获一个关键事件,然后根据修改器可能关闭的方式,接受在目的地接受移动或复制。但是,我担心的是目标是否具有焦点以及键事件是否会在拖动期间传播。我会尝试这种方法,但还决定询问这里是否有人知道替代方案(或者甚至可能改变默认值的能力将来自Java 9)。
谢谢!