ドロップされたファイルの構造を複製する JTree を作成しようとしています。私が抱えている問題は、私のコードが最初に追加したファイルだけであることです。別のファイルをツリーに d&d しようとすると、単純に無視されます。これはドラッグ アンド ドロップ機能です。
root = new DefaultMutableTreeNode("Home");
JTree jtree = new JTree(root);
/**
* JScrollPane and other swing code here.
* Try-catch blocks in the code below were
* removed for readability
**/
jtree.setDropTarget(new DropTarget() {
public void drop(DropTargetDropEvent evt) {
evt.acceptDrop(DnDConstants.ACTION_COPY);
ArrayList<File> inputFiles = new ArrayList<>();
inputFiles.addAll((List<File>) evt.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
updateTree(inputFiles);
}
});
そして、これは私がノードを追加するために使用している方法です:
private void updateTree(ArrayList<File> inputFiles){
for(File f: inputFiles){
String[] filePath = f.getPath().split("\\\\");
DefaultMutableTreeNode node = root;
DefaultMutableTreeNode child;
for(String g: filePath){
child = new DefaultMutableTreeNode(g);
node.add(child);
node = child;
}
}
}