我希望文本字段能够处理来自finder的文件。
在使用JavaFX 8的Mac OS X上似乎忽略了这一点。我看不出代码有任何问题,是吗?
只有“进入!”得到印刷。 “丢弃!”永远不会被打印出来。
...
txtSource = (TextField)scene.lookup("#txtSource");
txtSource.setOnDragEntered(this::handleEnter);
txtSource.setOnDragDropped(this::handleDrop);
...
public void handleEnter(DragEvent event) {
System.out.println("Entered!");
event.acceptTransferModes(TransferMode.ANY);
event.consume();
}
public void handleDrop(DragEvent event) {
System.out.println("Dropped!");
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasFiles()) {
File f = db.getFiles().get(0);
TextField t = (TextField)event.getAcceptingObject();
t.setText(f.getAbsolutePath());
success = true;
}
/* let the source know whether the string was successfully
* transferred and used */
event.setDropCompleted(success);
event.consume();
}
答案 0 :(得分:0)
由于某些原因我不清楚,您需要在dragOver
处理程序中接受传输模式,而不是dragEntered
处理程序:
txtSource.setOnDragOver(this::handleEnter);
// txtSource.setOnDragEntered(this::handleEnter);