当前位置: 首页 > 面试题库 >

如何在Swing中使用拖放来获取文件路径?

陆甫
2023-03-14
问题内容

我的swing应用程序中有一个JTextField,它保存选定要使用的文件的文件路径。目前,我有一个JFileChooser,用于填充此值。但是,我想为用户添加将文件拖放到此JTextField上的功能,而不是始终使用JFileChooser来将其放置在JTextField中。

如何才能做到这一点?


问题答案:

首先,您应该研究Swing
DragDrop支持
。在那之后,针对不同操作系统的一些小技巧。一旦一切顺利,您将处理drop()回调。在此回调中,您将要检查Transferable的DataFlavor。

对于Windows,您只需检查DataFlavor.isFlavorJavaFileListType(),然后按以下方式获取数据

List<File> dropppedFiles = (List<File>)transferable.getTransferData(DataFlavor.javaFileListFlavor)

对于Linux(可能是Solaris),DataFlavor有点棘手。您需要制作自己的DataFlavor,而Transferable类型将有所不同

nixFileDataFlavor = new DataFlavor("text/uri-list;class=java.lang.String");
String data = (String)transferable.getTransferData(nixFileDataFlavor);
for(StringTokenizer st = new StringTokenizer(data, "\r\n"); st.hasMoreTokens();)
{
    String token = st.nextToken().trim();
    if(token.startsWith("#") || token.isEmpty())
    {
         // comment line, by RFC 2483
         continue;
    }
    try
    {
         File file = new File(new URI(token))
         // store this somewhere
    }
    catch(...)
    {
       // do something good
       ....
    }
}


 类似资料:
  • 问题内容: 我一直在尝试将新的Flysystem与Laravel 5集成在一起。我正在将“本地化”路径存储到数据库,并让Storage Facade来完成路径。例如我存储和使用 要么 我可以在不同的磁盘上检索相同的文件。 检索文件内容,但是我希望在这样的视图中使用它: 但是路径,或者任何能够检索完整路径的东西都不可用(据我所知)。那么如何返回完整路径?或者,我想知道这是否是设计使然?如果是这样,为

  • 我想从SD卡文件路径中获取文件名。e、 g.:/storage/sdcard0/DCIM/Camera/1414240995236。jpg我想得到1414240995236。jpg我已经编写了获取相同内容的代码,但它不起作用。请帮忙<下面是我的代码:

  • 问题内容: 我需要将.txt文件读入groovy类,以便逐行询问它。但是我不确定我将其放在grails应用程序中的哪个文件夹中,以及如何获取该文件夹的路径? 到目前为止,我已经尝试将其放置在新文件夹下 我尝试了以下内容以阅读 和 无济于事。 任何机构都有指针吗? 问题答案: Grails是一个Java Web应用程序,因此它将被编译成一个sigle文件,其中包含所有文件/类/ etc。大多数Web

  • 我正在使用jquery filepond image uploader插件,它将文件上传变成拖放区。 下面是初始化文件池的脚本 我计划在不使用ajax的情况下提交一个表单,它是一个dircect表单提交。 我只是想知道如何获取被拖放的文件名,以便将文件名值分配给另一个隐藏输入,这样我就可以通过form submit直接提交整个表单。 当文件被丢弃时,我已经将事件记录在console.log(“文件

  • 问题内容: 给定路径,例如,我如何找到相对于Python中当前工作目录的文件的绝对路径?例如在Windows上,我可能会得到以下结果: 问题答案: 如果已经是绝对路径,也可以使用:

  • 问题内容: 给定Python中的类C,如何确定该类在哪个文件中定义?我需要可以从类C或从关闭C的实例工作的东西。 我这样做的原因是因为我通常不喜欢将属于同一文件的文件放在同一文件夹中。我想创建一个使用Django模板将其自身呈现为HTML的类。基本实现应根据定义类的文件名来推断模板的文件名。 假设我在文件“ base / artifacts.py”中放置了一个LocationArtifact类,那