1

JEdi​​torPane に貼り付けたときに一部のテキストを削除するカスタム TransferHandler を作成しようとしています。しかし、TransferHandler を使用して JEditorPane を設定すると、コピーと切り取りが機能しなくなります。元に戻す方法はありますか?私が本当にカスタマイズしたいのは、貼り付け機能だけです。

JEdi​​torPane の設定方法は次のとおりです。

JEditorPane jep= new JEditorPane();

myTransferHandler th = new myTransferHandler();
jep.setTransferHandler(th);

これは私の TransferHandler クラスです:

public class myTransferHandler extends TransferHandler {
    @Override
    public boolean importData(TransferHandler.TransferSupport support) {
        JEditorPane jep = (JEditorPane) support.getComponent();
        HTMLDocument doc = (HTMLDocument) jep.getDocument();
        int offset = jep.getCaretPosition();
        try {
            Object data = support.getTransferable().getTransferData(new DataFlavor(String.class, "String"));
            if(jep.getSelectedText() != null)
                //remove any highlighted text
                jep.getDocument().remove(jep.getSelectionStart(), jep.getSelectionEnd() - jep.getSelectionStart());
            doc.insertString(offset, (String) data, null);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("Insert String failed");
            e.printStackTrace();
            return false;
        }
        return true;
    }               
}

このチュートリアル(「注意」セクション)を読みましたが、独自の TransferHandler をインストールすると、他の種類の転送 (切り取りやコピーなど) を実行できなくなります?? カスタム TransferHandler を使用すると、クラス全体を実装する必要があるということですか?

どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

0

だから私は私の問題の解決策を見つけました。JEdi​​torPane にプレーン テキストを貼り付けたいだけでした。JEdi​​torPane のコンテンツ タイプを「text/html」に設定して HTML コードを表示する場合、Web サイトからコピーして JEditorPane に貼り付けると、不要な HTML コンテンツ (リッチ テキスト形式のものなど) が追加されます。そのため、プレーンテキストを貼り付ける方法を探していました。

そのために、このTextTransferHandlerを使用しました。

于 2014-01-06T19:12:03.077 に答える