我使用以下代码(ABika的How can I use Drag-and-Drop in Swing to get file path?)进行拖放操作:
final class FileDropHandler extends TransferHandler {
@Override
public boolean canImport(TransferHandler.TransferSupport support) {
for (DataFlavor flavor : support.getDataFlavors()) {
if (flavor.isFlavorJavaFileListType()) {
return true;
}
}
return false;
}
@Override
@SuppressWarnings("unchecked")
public boolean importData(TransferHandler.TransferSupport support) {
if (!this.canImport(support))
return false;
List<File> files;
try {
files = (List<File>) support.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
} catch (UnsupportedFlavorException | IOException ex) {
// should never happen (or JDK is buggy)
return false;
}
for (File file: files) {
// do something...
}
return true;
}
}
然后将处理程序添加到组件中。
但问题是,尽管“@SuppressWarnings(”未经检查“)”,我收到错误:
类型列表不是通用的;它不能用参数&lt;参数化文件&gt;
谁能告诉我这里有什么问题?看起来很直截了当。 感谢
答案 0 :(得分:1)
在这种情况下,方法getTransferData
应返回java.util.List
,但您要导入java.awt.List
,要么作为单一类型的导入语句,即import java.awt.List;
,要么作为按需导入语句即import java.awt.*;
。如果您有前者,则需要将其更改为java.util.List
,如果您有后者,则需要将java.awt
中的每个类作为单一类型导入导入,或者使用限定的{{ 1}} List
方法中的类型名称,例如importData
。
答案 1 :(得分:0)
压制&#34;未选中&#34;警告仅适用于经过未经检查的操作(如通用转换)的泛型类型。它不会像在非泛型类型上放置泛型参数那样抑制一个彻头彻尾的错误。您将通用参数添加到非泛型类型List
。这是一个无法抑制的错误。