为了覆盖某些功能,我在我的JList中添加了一个自定义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不被打电话吗?
发布于 2014-12-14 19:53:51
传输处理程序需要在它自己的类中,并在每个源组件和目标组件上设置。源组件将调用createTransferable()方法
CustomTransferHandler customTransferHandler = new CustomTransferHandler();
sourceComponent.setTransferHandler(customTransferHandler);
targetComponent.setTransferHandler(customerTransferHandler);发布于 2013-11-21 23:31:53
我记得我和JTabbedPane有过这样的问题。检查API的setDropEnabled或类似的东西。我用我的手机写信,所以我不能准确地说出来。
还要确保您的JList触发了一个拖动启动事件。
https://stackoverflow.com/questions/20130825
复制相似问题