我已将自定义 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
没有被调用吗?
您的传输处理程序需要位于其自己的类中,并在每个源组件和目标组件上进行设置。源组件将调用createTransferable()方法
CustomTransferHandler customTransferHandler = new CustomTransferHandler();
sourceComponent.setTransferHandler(customTransferHandler);
targetComponent.setTransferHandler(customerTransferHandler);
我是一名优秀的程序员,十分优秀!