JavaFx 8 TreeCell 拖放
JavaFx 8 TreeCell Drag and Drop
objective 是在 treeView 上使用拖放来移动其自身的节点。
我见过几个在重新定义的 TreeCell 中处理事件的示例,但只有触发检测到的事件。
这是我的代码:
public class TreeCellImpl extends TreeCell<TreeItemContent> {
public TreeCellImpl() {
setOnDragEntered(e -> {
System.out.println(" Entered ");
e.consume();
});
setOnDragDetected(e -> {
System.out.println(" Detected ");
startDragAndDrop(TransferMode.MOVE);
e.consume();
});
setOnDragDone(e -> {
System.out.println(" Done ");
e.consume();
});
setOnDragDropped(e -> {
System.out.println(" Dropped ");
e.setDropCompleted(true);
e.consume();
});
setOnDragExited(e -> {
System.out.println(" Exited ");
e.consume();
});
setOnDragOver(e -> {
System.out.println(" Over ");
e.consume();
});
}
}
我哪里错了?
似乎在您将一些内容添加到 Dragboard
之前事件处理程序不会被触发:
setOnDragDetected(e -> {
System.out.println(" Detected ");
Dragboard db = startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putString( "Hello!" );
db.setContent(content);
e.consume();
});
您也可以选择使用 MouseEvent. I.e. MouseDragEvent 中描述的其他类型的拖放机制。
objective 是在 treeView 上使用拖放来移动其自身的节点。
我见过几个在重新定义的 TreeCell 中处理事件的示例,但只有触发检测到的事件。
这是我的代码:
public class TreeCellImpl extends TreeCell<TreeItemContent> {
public TreeCellImpl() {
setOnDragEntered(e -> {
System.out.println(" Entered ");
e.consume();
});
setOnDragDetected(e -> {
System.out.println(" Detected ");
startDragAndDrop(TransferMode.MOVE);
e.consume();
});
setOnDragDone(e -> {
System.out.println(" Done ");
e.consume();
});
setOnDragDropped(e -> {
System.out.println(" Dropped ");
e.setDropCompleted(true);
e.consume();
});
setOnDragExited(e -> {
System.out.println(" Exited ");
e.consume();
});
setOnDragOver(e -> {
System.out.println(" Over ");
e.consume();
});
}
}
我哪里错了?
似乎在您将一些内容添加到 Dragboard
之前事件处理程序不会被触发:
setOnDragDetected(e -> {
System.out.println(" Detected ");
Dragboard db = startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putString( "Hello!" );
db.setContent(content);
e.consume();
});
您也可以选择使用 MouseEvent. I.e. MouseDragEvent 中描述的其他类型的拖放机制。