如何设置Component的DataFlavor?

时间:2016-11-03 23:22:56

标签: java swing drag-and-drop transfer

我不确定我是否正确理解了DataFlavor的原理,但我怎样才能真正设置JComponent的DataFlavor? 每次调用getDataFlavor方法时,输出都是:

java.awt.datatransfer.DataFlavor[mimetype=application/x-java-file-list;representationclass=java.util.List]

我的问题是,我想将图像从桌面或任何其他位置拖到我的JPanel中。它正在使用DataFlavor.javaFileListFlavor,但是我无法创建仅接受PNG和JPG文件的自定义风格吗? (我知道它实际上可以创建自定义口味,但我不知道我怎么能"启用"为我的组件创建新的口味)

或者有没有办法确保拖动的Item是否是带有javaFileListFlavor的PNG或JPG?

我希望我能够很好地解释我的问题(我不是这种语言的主人,但我会尽我所能;)

1 个答案:

答案 0 :(得分:1)

  

或者有没有办法确保拖动的Item是否是带有javaFileListFlavor的PNG或JPG?

查看Top Level Drop上的Swing教程。它显示了如何将文件从桌面拖到JTextArea。

查看canImport(...)的{​​{1}}和importData(...)方法。 TransferHandler方法目前只检查您是否有FileListFlavor。因此,您需要添加额外的逻辑才能看到实际的文件是PNG或JPG。

如果查看canImport(...)方法,您可以看到如何从TransferSupport对象获取File对象,以便您可以实现上述检查。

编辑:

  

但正如所描述的那样弹出了

我只是忽略了异常。以下是本教程的修改代码,仅允许您复制" .java"文件进入文本区域。

importData(...)

在Winodow 7上使用JDK8对我很好。