我想知道是否有办法以“简单的方式”做到这一点,也许有人知道解决方案:
我正在使用 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 类上,您可以找到三个方法:
公共getReader(int pos)
公共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 个构造函数:
公共 HTMLReader(int 偏移量)
公共 HTMLReader(int 偏移量,int popDepth,int pushDepth,HTML.Tag insertTag)
HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag, boolean insertInsertTag, boolean insertAfterImplied, boolean wantTrailingNewline)
再次,最后一个,是非公开的。
我需要做的是从我的自定义类中至少调用这两个非公共类: public class MyHTMLDocument extends HTMLDocument{
但我只是不知道该怎么做..我什至尝试了一些反射,它似乎适用于方法,但我找不到对构造函数做同样的方法......再次感谢。