我不确定我是否正确理解了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?
我希望我能够很好地解释我的问题(我不是这种语言的主人,但我会尽我所能;)
答案 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对我很好。