これを「簡単な方法」で行う方法があるかどうか疑問に思っており、おそらく誰かが解決策を知っています:
私はjavax.swing.text.html.HTMLDocumentクラスで作業していますが、何らかの理由で、必要な少なくとも2つのメソッドが非公開であるため、それらを「オーバーライド」していくつか変更する必要があります.しかし、何らかの方法で HTMLDocument クラスを保持する必要があるのは、javax.swing.text.html パッケージを大量に使用しているためです...
だから、私が最初にやったのは、MyHTMLDocument を作成して HTMLDocument を拡張し、いくつかのメソッドをオーバーライドしようとしたことです...それが失敗したとき、いくつかのメソッドでリフレクションを使用して解決しようとしましたが、機能していません..だから、必死になって、私はHTMLDocumentコードをMyHTMLDocumentとして「すべてコピーして貼り付け」(HTMLDocumentを拡張)し、必要なものを変更して自分の「javax.swing.text.html」パッケージに配置しましたが、今のところは機能しているようですが.. .
...最終的に実行すると、たとえばTagActionsを呼び出すと、「不正アクセスエラー」が発生し、イライラします...
誰かが私を助けてくれたら、本当に感謝しています。
アップデート:
わかりました、明確にしましょう:
クラス javax.swing.text.html.HTMLDocument には、次の 3 つのメソッドがあります。
public getReader(int pos)
public getReader(int pos, int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
getReader(int pos, int pos, int popDepth, int pushDepth, HTML.Tag insertTag, boolean insertInsertTag)
最後のものは非公開または保護されています。
また、HTMLReader と呼ばれる内部クラスがあり、3 つのコンストラクターがあります。
public HTMLReader(int オフセット)
public HTMLReader(int オフセット、int popDepth、int pushDepth、HTML.Tag insertTag)
HTMLReader(int オフセット, int popDepth, int pushDepth, HTML.Tag insertTag, boolean insertInsertTag, boolean insertAfterImplied, boolean wantTrailingNewline)
繰り返しますが、最後のものは非公開です。
私がする必要があるのは、カスタム クラスから少なくとも次の 2 つの非パブリックを呼び出すことです: public class MyHTMLDocument extends HTMLDocument{
} しかし、私はそれを行う方法がわかりません..リフレクションを試してみましたが、メソッドでは機能するように見えますが、コンストラクターで同じことを行う方法が見つかりません...ありがとう。