java - JTable 使用 Swings 拖放文件

标签 java swing file drag-and-drop jtable

我正在创建一个 MusicPlayer GUI,它实现了将文件拖放到 table 上,从而允许

public void drop(DropTargetDropEvent dtde){
            dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
            Transferable t = dtde.getTransferable();
            try {
                List fileList = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
                File f = (File)fileList;
                addDnDFile(fileList);
            } catch (UnsupportedFlavorException ex) {
            } catch (IOException ex) {
            }

        }

到目前为止,我似乎无法找出任何可能的方法将列表转换为文件,以便能够使用我的 addDnDFile 方法将文件添加到我的音乐播放器。

最佳答案

List 显然不是 File,它是 FileList

不幸的是,这是在我们获得泛型之前;),但基本上,您想要迭代 List 并检查每个条目实际上是一个 File 并处理例如,以您想要的任何方式进行

@Override
public synchronized void drop(DropTargetDropEvent dtde) {
    if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
        Transferable t = dtde.getTransferable();
        List fileList = null;
        try {
            fileList = (List) t.getTransferData(DataFlavor.javaFileListFlavor);
            if (fileList != null && fileList.size() > 0) {
                for (Object value : fileList) {
                    if (value instanceof File) {
                        File f = (File) value;
                        if (row < 0) {
                            model.addRow(new Object[]{f.getAbsolutePath(), "", f.length(), "", ""});
                        } else {
                            model.insertRow(row, new Object[]{f.getAbsolutePath(), "", f.length(), "", ""});
                            row++;
                        }
                    }
                }
            }
        } catch (UnsupportedFlavorException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        dtde.rejectDrop();
    }
}

有关可运行的示例,您可以查看 drag and drop files from OS into JTable java

关于java - JTable 使用 Swings 拖放文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36443201/

相关文章:

java - 将 Android 客户端与 Java 应用服务器连接的最佳方式是什么?

java - 查找节点和树根之间的距离

java - 向后画弧线?

java - 计算文件的总计和平均值

java - 将 bean 注入(inject)到 Spring 托管上下文之外的类中

java - JOptionPane 不会关闭

java - 如果组件对于方法而言是本地的,则从其自己的监听器引用该组件

java - 追加文件时更新校验和(MD5,SHA1)java

css - @font-face 只能在本地工作

java - 在 Java 中快速、简单地使用对称密码进行整数加密