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) ではいくつか問題が発生しました。
最初のドラッグ アンド ドロップは正常に機能しますが、2 番目のドラッグ アンド ドロップは起動しません。マウスは変化せず、ドラッグ アンド ドロップも行われません。
例が必要な場合は、このチュートリアル ( http://docs.oracle.com/javase/tutorial/uiswing/dnd/dropmodedemo.html ) の jnlp を実行して、ドラッグ アンド ドロップを 2 回実行してみてください。
この問題を解決するにはどうすればよいですか? また、Linux では、exportDone-Method が呼び出されることはありません。
ちなみに、Java 6 と 7 でテストしましたが、どちらも同じ動作でした。