最近SWTを使用してアプリケーションを作成しました。そのダイアログボックスの1つに、いくつかのウィジェットがあります。そのうちの1つはTextで、他のウィジェットとDNDをサポートするように設計されています。私は最初に、2つのTreeウィジェットのDNDサポートを同じダイアログボックス(ドラッグ元とドロップ先の両方)に追加しました。そのテキストウィジェットのDNDサポートを追加する前に、Linuxプラットフォーム(gtk)では、SWT Textウィジェットが自動的にドラッグアンドドロップサポートを取得することに気付きました。つまり、すでに他のツリーウィジェットからドラッグして、このテキスト(そこに挿入される任意の位置)にドロップし、このテキストから他のツリーまたはテキストウィジェットにテキストを選択してドラッグすることができます。SWTドラッグ&ドロップによるテキストウィジェットのサポート
ただし、これはLinuxプラットフォームでのみ動作しますが、Windowsでは動作しません。同じプログラムがWindows上で実行されている場合、そのTextウィジェットに対するDNDサポートはありません(ツリーウィジェットはDewサポートを持っていますが、私はそれらに対して特別な書き込みを行っています)。
だからここに私もWindows上で達成したいものです。
- は、テキストウィジェット内の任意の位置にテキストをドロップします。
- の前にキャレット位置を明確に見ることができます。キャレット位置はマウスカーソルと共に移動する必要があります。テキストウィジェットで
- サポートマルチライン
解決代わりにテキストウィジェット
DropTarget target = new DropTarget(sytledText, DND.DROP_MOVE | DND.DROP_COPY);
target.setTransfer(new Transfer[] { TextTransfer.getInstance() });
target.addDropListener(new StyleTextDropTargetEffect(sytledText));
- 使用StyledText(またはそれを拡張)とDRオペアンプリスナとして追加
私は手を汚くして、自分のために手作りしました。しかし、私はスクロール位置の問題を解決できませんでした。 StyledTextはすでにStyledTextDropTargetEffectクラスでこのサポートを持っています。私はCsaba_Hがそれを持ち出すまでそれに気付かなかった。ありがとう! – bryantsai