我已向我的TransferHandler
添加了自定义JList
,以覆盖某些功能。
具体来说,我想设置自定义DataFlavor以禁用拖动到ComboBox和文本字段。
fileList.setTransferHandler(new TransferHandler() {
@Override
public int getSourceActions(JComponent comp) {
return COPY;
}
@Override
public boolean canImport(TransferSupport support) {
// this works
}
@Override
public boolean importData(TransferSupport support) {
// this works too
}
@Override
protected void exportDone(JComponent source, Transferable data, int action) {
// WONT WORK
System.out.println("export done");
}
@Override
protected Transferable createTransferable(JComponent c) {
// NEITHER THIS
System.out.println("createTransferable");
return new Transferable() {
// some stuff
};
}
});
任何人都知道为什么exportDone
和createTransferable
没有被调用?
答案 0 :(得分:1)
您的传输处理程序需要位于其自己的类中,并在每个源和目标组件上设置。 源组件将调用createTransferable()方法
CustomTransferHandler customTransferHandler = new CustomTransferHandler();
sourceComponent.setTransferHandler(customTransferHandler);
targetComponent.setTransferHandler(customerTransferHandler);
答案 1 :(得分:0)
我记得我在JTabbedPane上遇到过这样的问题。 检查setDropEnabled的API或者像这样。我用手机写的,所以我不能完全说出来。
还要确保您的JList触发拖动启动事件。