gpt4 book ai didi

java - JList 的 TransferHandler.createTransferable() 和 .exportDone() 未调用

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:41 25 4
gpt4 key购买 nike

我已将自定义 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
};
}
});

有人知道为什么 exportDonecreateTransferable 没有被调用吗?

最佳答案

您的传输处理程序需要位于其自己的类中,并在每个源组件和目标组件上进行设置。源组件将调用createTransferable()方法

CustomTransferHandler customTransferHandler = new CustomTransferHandler();

sourceComponent.setTransferHandler(customTransferHandler);
targetComponent.setTransferHandler(customerTransferHandler);

关于java - JList 的 TransferHandler.createTransferable() 和 .exportDone() 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20130825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com