JTree 용 사용자 정의 TransferHandler를 작성 했으므로 Move (Move 만 지원)와 Paste (canImport에서 support.isDrop()을 확인하여)를 사용할 수 없지만 ' 잘라 내기 작업을 비활성화하는 방법을 알아보십시오.Java JTree/TransferHandler의 잘라 내기 동작 사용 안 함
exportDone 메서드에서 결정을 내리지 만 지금까지 행운을 가져다하지 않은 것처럼 보입니다. 지금까지 내 방식은 이렇게 보이지만 드래그 앤 컷은 모두 이동 동작과 연결되어 있습니다.
protected void exportDone(JComponent source, Transferable data, int action) {
if(action == TransferHandler.MOVE) {
try {
List<TreePath> list = ((TestTreeList) data.getTransferData(TestTreeList.testTreeListFlavor)).getNodes();
int count = list.size();
for(int i = 0; i < count; i++) {
TestTreeNode node = (TestTreeNode) list.get(i).getLastPathComponent();
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.removeNodeFromParent(node);
}
tree.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
} catch (UnsupportedFlavorException e) {
Log.logException(e);
} catch (IOException e) {
Log.logException(e);
}
}
}
답장을 보내 주셔서 감사하지만 나를 위해 작동하지 않는 것 같습니다. 필자는 원본 트리와 TransferHandler가 저장 한 참조에서이 작업을 수행했습니다. 나는 또한 삽입물과 함께 importData 메소드로 노드를 제거하는 방법을 생각해 보았지만 같은 방법으로 처리하는 것이 어렵다는 것을 증명했다. 이것은 'cut'이 exportDone 메소드의 노드를 제거 할 가능성을 제거합니다. – testelemental