我想将一个字符串从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进行了测试,两者行为相同!