我想将字符串从 JTable 的单元格拖到浏览器中。
因此我写了这样的东西:
table.setDragEnabled(true);
table.setTransferHandler(new TransferHandler() {
@Override
protected Transferable createTransferable(JComponent c) {
isDragged = true;
return new StringSelection(exportString(c));
}
@Override
public int getSourceActions(JComponent c) {
return TransferHandler.COPY_OR_MOVE;
}
@Override
protected void exportDone(JComponent c, Transferable t, int act) {
isDragged = false;
}
protected String exportString(JComponent c) {
// return some String
}
});
这在 Windows 和 Mac 下运行良好,但在 Linux (Ubuntu) 下我遇到了一些麻烦:
第一个拖放工作正常,但第二个甚至无法启动!鼠标没有改变,也没有完成拖放。
如果您想要一个示例,您可以简单地运行本教程的 jnlp:http: //docs.oracle.com/javase/tutorial/uiswing/dnd/dropmodedemo.html并尝试进行两次拖放。
我能做些什么来解决这个问题?此外,在 Linux 下,永远不会调用 exportDone-Method!
顺便说一句:我用 Java 6 和 7 进行了测试,两者的行为都是一样的!