JEditorPane に貼り付けたときに一部のテキストを削除するカスタム TransferHandler を作成しようとしています。しかし、TransferHandler を使用して JEditorPane を設定すると、コピーと切り取りが機能しなくなります。元に戻す方法はありますか?私が本当にカスタマイズしたいのは、貼り付け機能だけです。
JEditorPane の設定方法は次のとおりです。
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 を使用すると、クラス全体を実装する必要があるということですか?
どんな助けでも大歓迎です!ありがとう!